2017-02-15 11 views
0

私はJavaの初心者です。私は運動をしようとしています。スキャナが2回入力を要求します

P3.3は≥100、番号が≥10であるか否かをチェックすることによって、数が持つ桁数 整数とプリントを読み取るプログラムを作成し、そうで 。 (すべての整数が100億未満であると仮定します)。 の数値が負の場合、最初に-1を掛けます。

問題は次のとおりです。出力を取得する前に入力を2回入力する必要があることがわかります。

if(in.hasNextInt()){ 
    int number = in.nextInt(); 
} 

しかし、この場合、2つではなく1つの入力をするために何を変更する必要がありますか? ありがとうございます。

package week2; 

import java.util.Scanner; 

public class P3_3_Digits { 

public static void main(String[] args) { 

    Scanner in = new Scanner(System.in); 
    System.out.print("Voer een getal in: "); 
    int number = in.nextInt(); 


    if(in.hasNextInt()){ 

     in.close(); 

    if(number < 0){ 
     number = number * -1; 

     if(number >= 10 && number < 100){ 
      System.out.println("Het getal -" + number + " heeft 2 digits."); 
      } 

     else if(number >= 100 && number < 1000){ 
       System.out.println("Het getal -" + number + " heeft 3 digits."); 
     } 
     else if(number >= 1000 && number < 10000){ 
      System.out.println("Het getal -" + number + " heeft 4 digits."); 
    } 
     else if(number >= 10000 && number < 100000){ 
      System.out.println("Het getal -" + number + " heeft 5 digits."); 
    } 
     else if(number >= 100000 && number < 1000000){ 
      System.out.println("Het getal -" + number + " heeft 6 digits."); 
    } 
     else if(number >= 1000000 && number < 10000000){ 
      System.out.println("Het getal -" + number + " heeft 7 digits."); 
    } 
     else if(number >= 10000000 && number < 100000000){ 
      System.out.println("Het getal -" + number + " heeft 8 digits."); 

    } 





    } 

    else { 
     if(number >= 10 && number < 100){ 
      System.out.println("Het getal " + number + " heeft 2 digits."); 
      } 

     else if(number >= 100 && number < 1000){ 
       System.out.println("Het getal " + number + " heeft 3 digits."); 
     } 
     else if(number >= 1000 && number < 10000){ 
      System.out.println("Het getal " + number + " heeft 4 digits."); 
    } 
     else if(number >= 10000 && number < 100000){ 
      System.out.println("Het getal " + number + " heeft 5 digits."); 
    } 
     else if(number >= 100000 && number < 1000000){ 
      System.out.println("Het getal " + number + " heeft 6 digits."); 
    } 
     else if(number >= 1000000 && number < 10000000){ 
      System.out.println("Het getal " + number + " heeft 7 digits."); 
    } 
     else if(number >= 10000000 && number < 100000000){ 
      System.out.println("Het getal " + number + " heeft 8 digits."); 
    } 

    } 
    } 
    else { System.out.println(" Onjuiste invoer. Voer een getal in."); 

} 
} 

} 
+2

リトルトリックを。このトリックのための – Lemonov

+0

thnx! – Noor

+0

関連のないタグが削除されました。書式付きの書式 –

答えて

0

は親切hasNextIntを参照してください。

public boolean hasNextInt()戻り真この スキャナの入力内の次のトークンは、nextInt()メソッドを使用してデフォルト 基数のint値として解釈することができる場合。スキャナは、入力がすべて を超えて進まない。

if(in.hasNextInt()){

第二の入力が提供される場合に、条件がtrue又はfalseを評価します。 この条件は、2番目の入力をint値として解釈できる場合にのみtrueになります。

コードからif(in.hasNextInt()){を削除すると、すべて設定されます。

Scanner in = new Scanner(System.in); 
System.out.print("Voer een getal in: "); 

if (in.hasNextInt()) { 
    int number = in.nextInt(); 
    in.close(); 
    if (number < 0) { 
    number = number * -1; 

    if (number >= 10 && number < 100) { 
     System.out.println("Het getal -" + number + " heeft 2 digits."); 
    } 

    else if (number >= 100 && number < 1000) { 
     System.out.println("Het getal -" + number + " heeft 3 digits."); 
    } else if (number >= 1000 && number < 10000) { 
     System.out.println("Het getal -" + number + " heeft 4 digits."); 
    } else if (number >= 10000 && number < 100000) { 
     System.out.println("Het getal -" + number + " heeft 5 digits."); 
    } else if (number >= 100000 && number < 1000000) { 
     System.out.println("Het getal -" + number + " heeft 6 digits."); 
    } else if (number >= 1000000 && number < 10000000) { 
     System.out.println("Het getal -" + number + " heeft 7 digits."); 
    } else if (number >= 10000000 && number < 100000000) { 
     System.out.println("Het getal -" + number + " heeft 8 digits."); 

    } 

    } else { 
    if (number >= 10 && number < 100) { 
     System.out.println("Het getal " + number + " heeft 2 digits."); 
    } 

    else if (number >= 100 && number < 1000) { 
     System.out.println("Het getal " + number + " heeft 3 digits."); 
    } else if (number >= 1000 && number < 10000) { 
     System.out.println("Het getal " + number + " heeft 4 digits."); 
    } else if (number >= 10000 && number < 100000) { 
     System.out.println("Het getal " + number + " heeft 5 digits."); 
    } else if (number >= 100000 && number < 1000000) { 
     System.out.println("Het getal " + number + " heeft 6 digits."); 
    } else if (number >= 1000000 && number < 10000000) { 
     System.out.println("Het getal " + number + " heeft 7 digits."); 
    } else if (number >= 10000000 && number < 100000000) { 
     System.out.println("Het getal " + number + " heeft 8 digits."); 
    } 

    } 
} else { 
    System.out.println(" Onjuiste invoer. Voer een getal in."); 
} 

編集 - :

修正コードがbelow-が与えられるコードのint number = in.nextInt();線はif(in.hasNextInt()){条件の内側に移動されています。

+0

私がしようとしていることは次のようなことです: ユーザーが入力すると「Hello」と表示されるはずです: else {System.out.println( "Onjuiste invoer。 "。 整数が必要です。 – Noor

+0

@Noor、あなたの要件に応じてコードを更新しました。 'int number = in.nextInt();' if(in.hasNextInt()){'条件内でコード行が移動しました。 –

0

あなたは、このような方法であなたのコードを変更することができます桁int型の長さ=(int型)(Math.log10(N)+1)をカウントする

public static void main(String[] args) { 

     Scanner in = new Scanner(System.in); 
     System.out.print("Voer een getal in: "); 

     String s = in.nextLine(); 
     boolean isNumeric = s.chars().allMatch(Character::isDigit); 

     while (!isNumeric) { 
      System.out.println(" Onjuiste invoer. Voer een getal in."); 
      s = in.nextLine(); 
      isNumeric = s.chars().allMatch(Character::isDigit); 
     } 

     int number = Integer.parseInt(s); 
     in.close(); 

//  if (number < 0) {  ... 

    } 
+0

この場合、負の数字は使用できません。 – Noor

+0

いいえ、isNumeric = s.matches( "^ - ?([0-9] +)$");を試してください。 (2カ所で変更する必要があります) –