2016-11-10 8 views
0

こんにちは、私はスキャナを使用してinput.txtファイルを読み込もうとしていますが、入力ミスマッチの例外が発生し続けています。私が読んでいるファイルは次のように書式化されています。最初は配列サイズを識別する単一の数字です。次の行は、コンマで区切られた整数のリストです。これは私が持っているものですが、それが読み込まれている最初の整数に失敗:スキャナを使用しているときにJava MisMatchExceptionが発生しましたが、なぜですか?

 File inputFile = new File("input.txt"); 
    Scanner scan = new Scanner(inputFile); 
    int arraySize = scan.nextInt(); 
    scan.nextLine(); 
    int[] array = new int[arraySize]; 
    for (int i = 0; i < arraySize; i++) { 
     array[i] = scan.nextInt(); 
    } 

私も、私はおそらく、それぞれint型の後にカンマをキャッチするためにそこに何かを必要とすると思います。たぶんscan.next( "、")?最初のカンマの前には失敗しています。

ありがとうございます!

EDIT:例えば、入力ファイル:

5 
-1, -2, -3 , -4, -5 
+0

入力ファイル、または少なくとも初めを投稿することができますか?コンマについては、[Javaで文字列を分割する方法](http://stackoverflow.com/questions/3481828/how-to-split-a-string-in-java)を参照してください。 – bradimus

+0

あなたの 'scan.nextLine'の後にカンマを無視し、次の入力を取得するときにすべてのintを中間で使用する' scan.useDelimeter( "、") 'を使用してください。 – Zircon

+0

私はサンプル入力ファイルを投稿しました。デバッグでは、最初のコンマの前にエラーが発生していることがわかりました。コンマ区切りで追加しても、最初の値は渡されません。 – user6287161

答えて

0
File inputFile = new File("C:\\file.txt"); 
    Scanner scan = new Scanner(inputFile); 
    String size = scan.nextLine(); // read size 
    String aux = scan.nextLine(); 
    aux = aux.replaceAll("\\s",""); // remove whitespaces for better Integer.parseInt(String) 
    String[] parts = aux.split(","); 
    System.out.println("size "+size); 
    for (int i = 0; i < parts.length; i++) { 
     System.out.println(parts[i]); 
    } 
    scan.close(); 

その後、あなたは整数に文字列を変換することができます。

0

問題は、scanner.nextInt()を呼び出すと、要素をスペースで区切ってしまうことです。これを修正するには、区切り文字を "、"(scanner.useDelimiter(", ");)に設定するか、オスカーMの答えを見るかのどちらかを設定できます。
例:

Scanner sc = new Scanner("-1, -2, -3, -4"); 
sc.useDelimiter(", "); 
System.out.println(sc.nextInt()); 
System.out.println(sc.nextInt()); 

出力:

-1 
-2 
+0

これを何らかの理由で行っても、i = 2のときに同じエラーが発生します。最初の数回はどのように動作するのか分かりません。それは偶然に否定的な兆候と関係するものですか? – user6287161

+0

使用したカンマ文字がファイル内のものであることを確認してください。 –

0

あなたは文字列を読んで区切り文字を指定する必要があります。カンマではなく、空白のみを消費するようにデフォルト設定されています。

public static void main (String[] args) 
{ 
    int size = 5; 
    Scanner sc = new Scanner("-1, -2, -3, -4, -5"); 
    sc.useDelimiter("\\s*,\\s*"); // commas surrounded by whitespace 
    for (int i = 0; i < size; i++) { 
     System.out.println(sc.nextInt()); 
    } 
} 

Example

関連する問題