问题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数组