2017-07-30 7 views
-5

空白エラー(解決)中Javaプログラムの重複実行時エラー

 System.out.println("How many elements? "); 
     int eleme = scanbud.nextInt(); 
     System.out.println(); 

私はそれ

を実行しようとすると、ちょうどこの

System.out.println("How many elements? "); 
       int eleme = scanbud.nextInt(); 
       System.out.println(); 

が、私は何が起こるかの絵を置くん解決するために

as u can see.. I give one input but it gets executed twice

+2

ようこそスタックオーバーフロー!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、より具体的な質問に戻ってください。 –

+1

叫んでも助けにならないでしょう。 @ JoeCは有用なリンクをくれました。おそらくそれを読んでいますか? –

+0

私はそれを読んで... 1時間以上私のプログラムをデバッグしようとしました –

答えて

3

おそらくあなたのscanbud.next() functi次の行ではなく、次の「トークン」を読み込みます。ドキュメントを確認してnextLine()メソッドなどを探してみてください。 (内蔵Scanner class、インスタンスを参照されたい。)

本質的に、私はnext()関数は最初の空白まで読んでいるのでNi 3,5は、3,5の一方の入力に続いNiの一方の入力として処理されていると思われます。

一般に、組み込みのJava Scannerクラスには、実際に正しく使用するための面倒な側面があります。 nextInt()に続いてnextLine()を呼び出すと、nextInt()が改行文字(Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methodsを参照)を消費しないため直感的ではありません。それでも問題が解決しない場合は、nextInt()に電話したあとにnextLine()を追加して(結果を無視して)、さらには入力処理用に別のクラスに切り替えることを検討してください。

+0

私が使用した唯一の類似のスキャナは、stringのscanbud.next()です。私はまた、 –

+0

welpのためにscanbud.nextInt()を使用しています(PCを再起動します)...しかし、空白が必要な場合はどうすればいいですか? –

+0

あなたのPCを再起動すると、この種のJavaプログラムには効果がないはずです。変更するたびにプログラムをコンパイルしていることを確認してください。そして、もしあなたが行全体を望むなら、 'nextLine()'を使う必要があります。 –

関連する問題