1

我在使用 java 读取文本文件时遇到问题。文本文件具有以下格式:

String
String
String
String

Int 
Int
Int 
Int

每个 String 和 int 值在末尾都有一个换行符,在字符串和整数之间有一个空行。我想将每个字符串值保存到一个字符串数组中,但我不太清楚如何让扫描仪在空行处停止。我尝试了各种方法,例如直到有一个 int,直到 hasNext 的值为“”,并尝试仅读取字符串但没有任何效果。有人可以提供任何帮助吗?

4

3 回答 3

4

从您的示例中不确定您是否正好有 4 Strings 和 4 Integers 或更多,所以类似下面的东西应该可以工作:

List<String> strings = new ArrayList<String>();
List<Integer> ints = new ArrayList<Integer>();

while(scanner.hasNext() && !scanner.hasNextInt()) {
    strings.add(scanner.next());
}
while(scanner.hasNextInt()) { // If you also want to store the ints
    ints.add(scanner.nextInt());
}
于 2012-04-22T15:26:23.137 回答
0
while (mScanner.hasNextLine()){
    String line = mScanner.nextLine();
    if (line.length() == 0)
        break;
    else
        mArrayList.add(line);//do stuff
}
于 2012-04-22T15:22:52.923 回答
0
public static void main (String [] args)
{
    Scanner sc = new Scanner (System.in);
    int count = 0;
    while (sc.hasNext ())
    {
        String s = sc.next ();
        ++count;
        System.out.println (count + ": " + s);
        if (count == 4) 
            break;
    }
    while (sc.hasNext ())
    {
        int i = sc.nextInt ();
        System.out.println (count + ": " + i);
    }
}

猫狗

Foo

Bar

Foobar

Baz

1

2

4

8

测试:cat dat | java ScanIt

1: Foo
2: Bar
3: Foobar
4: Baz
4: 1
4: 2
4: 4
4: 8

如您所见,从最初的问题来看,我对文件格式的想法略有不同,但您会看到:我对换行符或空换行符没有做任何特别的事情。

所以这个程序也应该适合你。

于 2012-04-22T15:26:01.017 回答