簡體   English   中英

具有固定長度的Java Iterate數組,並使用Scanner類獲取值

[英]Java Iterate array with a fixed length and take values with Scanner class

我如何使用固定長度2的Scanner類獲取Java數組的值,並且它將迭代直到其值等於給定值? 例如; 對於以下輸入,

   A G 

   N H

   D F      

我編寫了一個for循環來獲取固定數組road的值,其中使用Scanner類的長度為2。

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

我想在用戶輸入為{'C','C'}時迭代此循環。 THat表示如果輸入如下,則數組循環應停止;

AG

NH

DF

CC

我如何編寫代碼以使用Scanner類獲取用戶輸入值並迭代數組? 並且應該復制用戶輸入值,而不用新輸入的值替換它們。 謝謝!

假設您的block和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' )

嘗試這種方式:

        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);

您需要的就是這個

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);
}

我從你的問題中假設以下

  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("[AZ]{1}")但是,如果使用正則表達式請注意,用戶提供的輸入與您的表達式之間的不匹配將導致InputMismatchException。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM