1

Javaでテキストファイルを読み取るのに問題があります。テキストファイルの形式は次のとおりです。

String
String
String
String

Int 
Int
Int 
Int

各Stringとintの値の最後に改行文字があり、stingsとintの間に空白行があります。各文字列値を文字列配列に保存したいのですが、スキャナーを空白行で停止させる方法がわかりません。intになるまで、hasNextの値が ""になるまで、文字列を読み取ろうとして何も機能しないなど、さまざまな方法を試しました。誰かが助けを提供できますか?

4

3 に答える 3

4

正確に4String秒と4Integer秒以上あるかどうかは例からわからないため、次のようなものが機能するはずです。

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

テスト:猫のデータ| java ScanIt

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

ご覧のとおり、元の質問とはファイル形式について少し異なる考えがありましたが、わかります。改行や空の改行に対して特別なことは何もしていません。

したがって、プログラムはあなたのためにも機能するはずです。

于 2012-04-22T15:26:01.017 に答える