2017-10-04 3 views
-2

このプログラムでは、私はそれを書くことを意図していました。スキャナーを介してユーザーから正の数値だけを取得し、ポジティブであれば 'リスト'の配列リストに追加する必要があります。 何らかの理由で、ユーザーが追加するときに最初の番号を追加するのではなく、2番目の番号のみを追加します(ループ中にこのように実行されます)。Scanner with ArrayList

誰か助けてもらえますか? ありがとう! :-)

import java.util.ArrayList; 
import java.util.Scanner; 
import java.util.ArrayList; 
public class Second_EX_Advanced_2 { 
    public static void main(String[] args) { 
     ArrayList<Integer> list = new ArrayList<Integer>(); 
     System.out.println("Please enter a positive number ... "); 
     Scanner INPUT = new Scanner(System.in); 
     while (INPUT.nextInt() > 0) { 
      list.add(INPUT.nextInt()); 
      System.out.println(list); 
     } 
     INPUT.close(); 
    } 
} 

*

+2

あなたは 'while'状態で最初の整数値を消費しています。 – Mena

+0

エラーの後に読んだ次の入力は、あなたが入力した悪い行の後の新しい入力になります。 – VedX

+0

は毎回入力を取るのではなく、入力値を常に変数に保存します。 – nik

答えて

1

あなたが実際に今、それが正常に動作する必要があり二回

while (INPUT.nextInt() > 0) { //first time here 
     list.add(INPUT.nextInt()); //second time here 
     System.out.println(list); 
    } 

int n; 
while ((n=INPUT.nextInt()) > 0) { //first time here 
     list.add(n); //second time here 
     System.out.println(list); 
    } 

に変更して入力を取っています。

0

エラーはあなたのwhileループである:

while (INPUT.nextInt() > 0) { 
      list.add(INPUT.nextInt()); 
      System.out.println(list); 
     } 

最初の整数を走査し、上記のように、第二のものを追加しています。ここで

あなたが作業コードで行く:

import java.util.ArrayList; 
import java.util.Scanner; 
import java.util.ArrayList; 
public class Second_EX_Advanced_2 { 
    public static void main(String[] args) { 
     ArrayList<Integer> list = new ArrayList<Integer>(); 
     System.out.println("Please enter a positive number ... "); 
     Scanner INPUT = new Scanner(System.in); 
     int num; 
     while ((num = INPUT.nextInt()) > 0) { 
      list.add(num); 
      System.out.println(list); 
     } 
     INPUT.close(); 
    } 
} 
+0

ありがとうございます:)それは助けました – Ofer

+0

答えの横にある矢印をクリックしてこの回答を受け入れることができますか?これはコミュニティに役立つだろう。 :) –