Java扫描程序问题

时间:2012-04-22 15:15:31

标签: java java.util.scanner

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

String
String
String
String

Int 
Int
Int 
Int

每个String和int值在末尾都有一个新的行字符,并且在stings和int之间有一个空行。我想将每个字符串值保存到字符串数组中,但我无法弄清楚如何让扫描仪停在空白行。我尝试了各种方法,比如直到有一个int,直到hasNext的值为“”,并试图只读取字符串但没有任何工作。有人可以提供任何帮助吗?

3 个答案:

答案 0 :(得分:4)

您的示例中不确定您是否有4个String和4个Integer或更多,因此以下内容应该有效:

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());
}

答案 1 :(得分:0)

while (mScanner.hasNextLine()){
    String line = mScanner.nextLine();
    if (line.length() == 0)
        break;
    else
        mArrayList.add(line);//do stuff
}

答案 2 :(得分: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);
    }
}

cat dat

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

从你看到的原始问题来看,我对文件格式略有不同,但你看到:我没有对换行或空换行做任何特别的事情。

所以该程序也适合你。