2016-10-02 17 views
-4

コンソールから5つの数字を読み込みたい。入力文字列を各数値のint [x]に変換するには、forループを使用しようとしました。しかし、#1のインクリメントがデッドコードであり、#2の配列が初期化されていないことが判明しました。 私は最初のJavaのプラクティスに目を通しており、いくつかのアドバイスを聞いてうれしいです。入力文字列をint配列に変換する

マイコード:

public static void main(String[] args) throws IOException { 

    System.out.println("Type in five Numbers"); 

    int [] array;  
    InputStreamReader isr = new InputStreamReader(System.in); 
    BufferedReader br = new BufferedReader(isr); 

    for(int x=0; x<5; x++){ 

    String eingabe = br.readLine(); 

    array[x] = Integer.parseInt(eingabe); 
    break; 
    } 

    reserve(array); } 
+3

最初の繰り返しでなぜ「中断」しますか? – Li357

+1

1)はい、あなたの配列は初期化されていません。配列にまだサイズがないので、 'array [x]'はどのように動作しますか? 2)あなたのループにbreakステートメントがあるので、一度だけ実行されます –

+0

あなたの答えをありがとう。 @AndrewL。 – obszoenling

答えて

1

まず第一に、あなたはあなたの配列を初期化しませんでしたが、あなただけの宣言された配列変数(という名前の配列)。私は、Javaのこの基本的な概念を読んで練習することを強く勧めます。そうしないと、後で混乱する可能性があるからです。宣言、初期化、および割り当ての詳細については、hereを参照してください。

もう1つの問題は、ループの最初の繰り返しでキーワードbreakを使用したことです。このキーワードはコードブロックを終了させるため、ループは1回だけ実行されてから正常終了します。


このコードは、スキャナで大幅に簡略化できます。スキャナは指定された場所から入力を読み取ります。スキャナのコンストラクタは、コンピュータ上のデフォルトの入力デバイス(キーボード)の場合はSystem.in、コンピュータのファイルなどのFileオブジェクトの場合は2つの入力を受け入れます。

スキャナのデフォルトでは、区切り文字は空白に設定されています。 delimeterは連続するトークンの境界を指定するので、たとえば2 3 5 5を入力してループを実行してscanVarName.nextInt()メソッドを呼び出すと、空白は無視され、その1行の各整数はそれぞれのトークンとして扱われます。

私が正しく理解している場合は、ユーザーからの入力を読み込み(おそらく整数を入力する)、これらを整数配列に保存したいと思いますか?ユーザーが入力する整数の数を知っている場合は、次のコードを使用してください。あなたは、まず、彼らが入ることを計画どのように多くの整数あなたを伝えるためにそれらを促すことができる。

// this declares the array 
int[] array;  

// declares and initializes a Scanner object 
Scanner scan = new Scanner(System.in); 

System.out.print("Number of integers: "); 

int numIntegers = scan.nextInt(); 

// this initializes the array 
array = new int[numIntegers]; 

System.out.print("Enter the " + numIntegers + " integers: "); 

for(int i = 0; i < numIntegers; i ++) 
{ 
    // assigns values to array's elements 
    array[i] = scan.nextInt(); 
} 

// closes the scanner 
scan.close();  

あなたはその後、上記のコードことを確認するために、あなたの配列内のアイテムを介して実行し、それらをプリントアウトするために、各ループを使用することができます意図したとおりに動作します。

+0

あなたの役に立つ答えをありがとう。私はちょうどあなたのコードを使用し、それは非常にうまくいった。 – obszoenling

関連する問題