1

一定量の整数 (1 から 10 でなければなりません) を取り、0 が入力されると数値の取り込みを停止する for ループを作成する方法を理解する助けが必要です (0 が最後の数値になります)。これまでの私のコードは次のとおりです。

   import java.util.Scanner;
   public class countNum {

      public static void main(String[] args) {

        int[] array;

        Scanner input = new Scanner(System.in);
        System.out.println ("Enter in numbers (1-10) enter 0 when finished:");

        int x = input.nextInt();

        while (x != 0) {
          if (x > 2 && x < 10) {
          //Don't know what to put here to make array[] take in the values
          }
          else
          //Can I just put break? How do I get it to go back to the top of the while loop?
        }
      }   

     }

}

設定された長さの配列を同時に初期化し、0 が入力されるまでスキャナにその未知の長さの一定量の数字を読み取らせる方法がわかりません。その後、ループは配列への入力の取り込みを停止します。

助けてくれてありがとう!

4

3 に答える 3

1

Java コレクションを実際に使ってみることを強くお勧めします。

プログラムを次のように修正できます

import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;

  public class arrayQuestion {

    public static void main(String[] args) {

        List<Integer> userInputArray = new ArrayList<Integer>();

        Scanner input = new Scanner(System.in);
        System.out.println("Enter 10 Numbers ");
        int count = 0;
        int x;
        try {
            do {
                x = input.nextInt();
                if (x != 0) {
                    System.out.println("Given Number is " + x);
                    userInputArray.add(x);
                } else {
                    System.out
                            .println("Program will stop Getting input from USER");
                    break;
                }
                count++;
            } while (x != 0 && count < 10);

            System.out.println("Numbers from USER : " + userInputArray);
        } catch (InputMismatchException iex) {
            System.out.println("Sorry You have entered a invalid input");
        } catch (Exception e) {
            System.out.println("Something went wrong :-( ");
        }

        // Perform Anything you want to do from this Array List

    }
}

これがあなたの疑問を解決することを願っています..これを超えて、ユーザーが上記のように文字または無効な入力を入力した場合、例外を処理する必要があります

于 2012-10-23T05:12:52.470 に答える
1

わかりましたここにもう少し詳細があります: -

  • ArrayList動的に増加する配列が必要な場合は、を使用する必要があります。あなたはこのようにします: -

    List<Integer> numbers = new ArrayList<Integer>();
    
  • 上記のコードでは、定期的に読み取りたいので、number読み取りステートメント ( ) を while ループ内に入れることができます。nextIntそして、入力された数値が int かどうかを確認する条件を while ループに入れます。

    int num = 0;
    while (scanner.hasNextInt()) {
        num = scanner.nextInt();
    }
    
  • さらに、あなたは自分で移動することができます。番号があるかどうかを確認するだけ0です。そうでない場合は0、次の場所に追加しArrayListます: -

    numbers.add(num);
    
  • の場合0は、while ループから抜け出します。

  • x != 0また、ループ内で既にチェックしているため、 while ループでその条件は必要ありません。

于 2012-10-23T04:53:02.203 に答える
1

あなたの場合、ユーザーは任意の桁数を入力できるようです。このシナリオでは、配列を初期化する前に配列のサイズを知る必要があるため、配列を持つことは理想的ではありません。ただし、いくつかのオプションがあります。

  1. ArrayListを使用します。これは、動的に拡張される動的データ構造です。
  2. ユーザーに入力する数値の量を尋ね、それを使用して配列を初期化します。
  3. サイズに関するいくつかの仮定に基づいて配列を作成します。

2 と 3 のどちらの場合も、(1) ユーザーが 0 を入力した場合 (2) またはユーザーが指定した数値の量が配列のサイズを超えた場合に、プログラムを停止させるロジックを含める必要があります。

ただし、実装が簡単なので、最初のソリューションに固執することをお勧めします。

于 2012-10-23T04:54:25.313 に答える