1

所以我正在从文件中读取一行,如下所示:

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]);


                }

它将“雪人”分开并将其放入数组中,但是,当我尝试找到第二个冒号时,indexOf() 一直返回-1。有谁知道为什么它没有找到第二个冒号?

4

4 回答 4

7

您可以保存所有代码并使用String#split拆分行:

String[] parts = temp.split(":");
于 2012-12-05T00:38:20.240 回答
4

我认为你的论点倒退了:

b = temp.indexOf(a+1,':');

应该...

b = temp.indexOf(':', a+1);

来自docs.oracle.com

public int indexOf(int ch,
               int fromIndex)

第一个参数是character,第二个参数是fromIndex.

于 2012-12-05T00:38:36.303 回答
4

因为您交换了 indexOf 调用的参数。它期望字符,然后索引开始查看。请记住,字符是整数,您正在寻找从“:”的 int 值开始的 char 7。

于 2012-12-05T00:38:59.530 回答
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]); 
于 2013-07-26T01:09:32.357 回答