所以我正在从文件中读取一行,看起来像是:
Snowman:286:355:10
这是我编写的用于分隔数据并将其放入数组的代码的第一部分。
for (int i = 0 ; i<manyItems; i++)
{
a = 0;
temp = scan.nextLine();
System.out.println(temp);
b = temp.indexOf(':');
System.out.println(b);
items[i] = temp.substring(a,b);
System.out.println(items[i]);
System.out.println(temp);
a = b;
System.out.println(temp);
b = temp.indexOf(a+1,':');
System.out.println(b);
rawX[i] = temp.substring(a+1,b);
System.out.println(rawX[i]);
}
它将“Snowman”分隔成数组,但是,当我尝试找到第二个冒号时,indexOf()会一直返回-1。有谁知道为什么它没有找到第二个结肠?
答案 0 :(得分:7)
您可以保存所有代码并使用String#split拆分该行:
String[] parts = temp.split(":");
答案 1 :(得分:4)
我认为你有倒退的论点:
b = temp.indexOf(a+1,':');
应该......
b = temp.indexOf(':', a+1);
public int indexOf(int ch, int fromIndex)
第一个参数是ch
字符,第二个参数是fromIndex
。
答案 2 :(得分:4)
因为您交换了indexOf调用的参数。它期待角色,然后索引开始看。请记住,字符是整数,你正在寻找从':'的int值开始的字符7。
答案 3 :(得分:0)
String
课程下有一个方法可以为你处理这项工作。 Split(regEx pattern)
是你可能想要使用的。以下代码将完成您尝试执行的任务:
String input = "Snowman:286:355:10";
String tokens [] = input.split(":");
for (int i = 0; i < tokens.length; i++)
System.out.println(tokens[i]);