JAVA学习笔记(8)

问题1:

String newPath[i] = splited[1];为什么报错

错误示例:

i:Syntax error on token i;delete this token

splited[1]: type mismatch

//String splited[]定义是这样的 解答:

这样:String[] newPath = new String[1];
newPath赋值是这样赋值:newPath[0] = splited[1];
注意:数组下标从0开始。newPath[0]表示该数组的第一个元素。


问题2:

                        String splited[] = null;
while((line=rd.readLine())!=null)//readLine 读取一个文本行
{
splited[] =line.split("->");//分割字符串
String splited1[] = splited[0].split("-");
List<String[]> oldPath = new ArrayList<String[]>();
oldPath.add(splited1);
List<String> newPath = new ArrayList<String>();
newPath.add(splited[1]);

}
为什么splited[] =line.split("->");//分割字符串这行会报错
如果在while里面定义String splited[]=line.split("->");就没有问题。

但是我现在想在外面使用这个参数,怎么办

答:

代码写的有问题,splited[] =line.split("->");//分割字符串
应该是:splited=line.split(“->”);


问题3:

我写的代码:
输入进去之后,每次循环找到一个子串,就记录长度和位置,然后把这个记录长度和位置的数组存到一个list中。但是为什么当我找到第二个,第三个子串以后,list里面存的数组的内容都变成一样的了?
int a[] = new int[2];//记录子串的长度和位置
List<int[]> comp = new ArrayList<int[]>();
for(int i = 0; i<oldPath.size(); i++)//找到所有匹配子串
{
String str = oldPath.get(i);
if(oldp.contains(str))
{
a[0] = i;//所处的位置
a[1] = str.length();//子串的长度
comp.add(a);

}

答:

                List<int[]> comp = new ArrayList<int[]>();
for(int i = 0; i<oldPath.size(); i++)//找到所有匹配子串
{
String str = oldPath.get(i);
if(oldp.contains(str))
{
int a[] = new int[2];//记录子串的长度和位置 a[0] = i;//所处的位置
a[1] = str.length();//子串的长度
comp.add(a);
}

数组是引用对象,你添加的时候重新new一个数组,不然始终是同一个对象。

数组是引用传递,你的a数组,是引用传递,所以总是最后一个数值的记录,后面覆盖前面,除非你在循环里面重新

       new a数组



JAVA学习笔记(8),布布扣,bubuko.com

JAVA学习笔记(8)

上一篇:MySQL泛泛而谈(3W字)


下一篇:多线程笔记