2

固定長 2 の Scanner クラスを使用して Java 配列の値を取得するにはどうすればよいですか? 例えば; 次の入力に対して、

   A G 

   N H

   D F      

Scanner クラスを使用して、長さが 2 の固定配列 road の値を取得する for ループを作成しました。

 for(int i = 0; i<block.length; i++){
        System.out.println("enter number");
        block[i]=input2.next().charAt(0);
 }

ユーザー入力が {'C','C'} である間、このループを繰り返したいと思います。これは、入力が次の場合、配列ループが停止することを意味します。

AG

NH

DF

CC

Scanner クラスを使用してユーザー入力値を取得し、配列を反復するコードを作成するにはどうすればよいですか? また、ユーザー入力値は、新しく入力した値に置き換えずにコピーする必要があります。ありがとうございました!

4

4 に答える 4

2

ブロック変数と input2 変数が既に設定されており、示されているようにループが機能していると仮定して、そのループをコントローラー ループ内に配置します。

 do {
    for(int i = 0; i<block.length; i++){
        System.out.println("enter number");
        block[i]=input2.next().charAt(0);
    }

 } while (block[0] != 'C" && block[1] != 'C' )
于 2013-10-26T09:02:16.747 に答える
2

この方法を試してください:

        Scanner input2 = new Scanner(System.in);
        char[] block = new char[2];
        ArrayList<String> arrayList = new ArrayList<String>();
        int i = 0;
        o:
        while (block[0] != 'C' && block[1] != 'C') {
            System.out.println("enter character");
            block[i % 2] = input2.next().charAt(0);
            i++;
            arrayList.add(input2.next());
            if(arrayList.size()>=2){
            if(arrayList.get(arrayList.size()-1).equals("C") && arrayList.get(arrayList.size()-2).equals("C"))
            {
                break o;
            }
            }
        }
   System.out.println(arrayList);
于 2013-10-26T09:17:41.667 に答える
1

必要なのはこれだけ

char[] block = new char[2];

while (block[0] != 'C' && block[1] != 'C') {
    System.out.println("enter number");
    block[0]=input2.next().charAt(0);
    System.out.println("enter number");
    block[1]=input2.next().charAt(0);
}
于 2013-10-26T09:02:24.497 に答える
0

ご質問から次のように推測します

  1. スキャナーを使用して値を読み取りたい固定長の配列があります
  2. 値を配列に読み取ったら、この配列を別の配列の値と比較し、入力配列が配列と一致する場合に何かを実行します。

これは、これを行う簡単なプログラムです。

    String[] scannedValues=new String[2];
    String[] matchValue={"X","Y"};
    boolean isMatched=false;
    Scanner s=new Scanner(System.in);
    while(!isMatched)
    {

        for(int i=0;i<scannedValues.length;i++)
        {
            scannedValues[i]=s.nextLine();
        }
        for(int i=0;i<scannedValues.length;i++)
        {
            if(matchValue[i].equals(scannedValues[i]))
                isMatched=true;
            else
                isMatched=false;
        }
            if(isMatched)
                s.close();
    }

などの Scanner メソッドを使用して、nextInt()さまざまなタイプの値を見つけることができます。次のような正規表現を Scanner に渡すこともできnext("[A-Z]{1}") ます。式によって InputMismatchException が発生します。

于 2013-10-26T10:01:16.627 に答える