1

まず、これは宿題用であり、提案を探しているだけです。答えない!私はプログラミングを学び、上手になろうと固く決心しています。私を正しい方向に向けてください、それは大歓迎です!

インターネットで解決策を検索しましたが、私のニーズに合った解決策が見つかりませんでした。高度な方法を使用できません。

プログラムは、ユーザーが範囲の開始番号と終了番号を入力できるようにすることです。開始番号は 10 で割り切れる必要があり、終了番号は 10 で割り切れる必要があり、開始番号と同じであってはなりません。ユーザーは、0 ~ 1000 の数字のみを使用するように制限されており、キーボードで他の文字を入力することはできません。そのため、「a」または「1200」にヒットした場合、プログラムは有効なエントリが入力されるまでループバックする必要があります。

現在、整数の入力のみを許可することに固執しています。私のコードの特定の部分は以下に掲載されています:

while(errorLoop != true){
        System.out.println("Enter the Starting Number of the Range (ex. 10,70,100)");
        startNum = kb.nextInt();
        System.out.println("Enter the Ending Number of the Range (ex. 10,70,100)");
        endNum = kb.nextInt();
        if(startNum % 10 == 0 && endNum % 10 == 0){
            errorLoop = true;
        }else{
            errorLoop = false;
            System.out.println("Start and End of range must be divisible by 10\n");
            System.out.println("Please try again (ex. 10,70,100)\n");
        }
    }

質問に関連するコードの部分のみを投稿しました。プログラムの要点を知る必要がある場合、数値の範囲は素数でソートされ、各行が 10 で割り切れる数値で終わる表形式に出力されます。非素数は「-」として出力されます。

元。71 - 73 - - - - - 79 | 80 \n そしてそれは範囲がどんなに大きくても続きます。

4

4 に答える 4

3

nextLine()の代わりに使用することをお勧めしますnextInt()。次に、最初にそれが整数として解析可能であることを確認し (整数 JavaDoc ページを確認してください)、次に数値が要件を満たしていることを確認します。

編集
入力が数値でない場合を処理するには、いくつかの方向に進むことができます。正規表現を使用した実際の解析呼び出しの前に、入力をチェックすることを好みます。String数字のみを含むAは一致します"^\\d+$"(優れた正規表現チュートリアルについては、このリンクを参照してください)。 String APIには便利なメソッドがあります。

于 2012-09-26T20:56:11.437 に答える
0

入力が数値であることを確認するために、常に正規表現を使用して入力を解析できます。

int number = Integer.parseInt(kb.nextLine().replaceAll(”[^\\d]“, “”));

入力:

1blahblah2moretext3

生産数:

 123
于 2012-09-26T21:02:26.980 に答える
0

入力された数値が数値かどうかをチェックするメソッドを作成します。

  boolean method(String num) {
       boolean retValue;
      try {
        // check out the Integer API for the methods related to parse an int
          retvalue=true;
        }
      catch(ParseException ex) {
         retvalue=false;
      } 
     return retvalue;    
   } 
于 2012-09-26T21:10:03.757 に答える