まず第一に、あなたはあなたの配列を初期化しませんでしたが、あなただけの宣言された配列変数(という名前の配列)。私は、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();
あなたはその後、上記のコードことを確認するために、あなたの配列内のアイテムを介して実行し、それらをプリントアウトするために、各ループを使用することができます意図したとおりに動作します。
最初の繰り返しでなぜ「中断」しますか? – Li357
1)はい、あなたの配列は初期化されていません。配列にまだサイズがないので、 'array [x]'はどのように動作しますか? 2)あなたのループにbreakステートメントがあるので、一度だけ実行されます –
あなたの答えをありがとう。 @AndrewL。 – obszoenling