質問: sc.nextInt(); if(array[i] <= -1) { --i; Arrays.parallelSort(array); System.out.println("整数 : " + i); break; } } Arrays.parallelSort(array); for(int i : array) { System.out.println("整数 : " + i); } } } ```
回答: カウンタをfor文外部で宣言して、負数が入力された時点でbreakすれば有効な要素数が分かります。 ``` int cnt = 0; for(; cnt < 20; ++cnt) { 入力を受け取る; if(入力が負数) { break; } } System.out.println(cnt); // 入力された有効な要素数 ``` なお、生配列では無くArrayListなどを使うと楽です。 整列については、『ソート』とググってください。 情報はいくらでも出てきます。 質問編集を受けて > > 20件未満入力した場合、20件分全て表示されてしまします。 > > > 解決策はいくつかあります。 1. **有効な部分だけを格納した配列を新たに作る** java.util.Arraysクラスあたりを調べれば使えそうなメソッドが見つかるでしょう。 2. **無効な部分を適当な値で埋めておく** 余った要素に負の値を詰め込んでおいて、出力の際それらを無視すれば良いです。 単純ではありますが、可読性に欠く方法なのでお勧めしません。 3. **最初からArrayListを使う** この方法が疑いなく最良です。推奨します。 なお、質問を編集しても回答者には通知が届きません。 追記を求める場合は、質問を編集したうえで個々の回答にコメントをした方が良いです。 過ぎた要求で無ければ応じてくれる人が多いです。