2015-03-31 104 views
0

我正在編寫一個程序,要求5位用戶輸入數字;但是,我需要將這些數字限制在1到30之間。我無法爲程序的這部分編寫while循環。將用戶輸入的數字限制在1和30之間

這裏是我的代碼:

Scanner input = new Scanner(System.in); 

     int numberCounter = 0; // Set scanner to 0 
     // Intialize numbers 1-5 
     int number1; 
     int number2; 
     int number3; 
     int number4; 
     int number5; 
     String asterisk = "*"; // Holds the string value "*" 

int number = 0; 
      while (number < 1 || number > 30){ 
       System.out.print("Enter the first number (between 1-30): "); 
       number = keyin.nextInt(); 
      } 

     System.out.print("Please enter a number between 1 and 30: ");// Calls for user input 
     number1 = input.nextInt();// Stores user input for number 1 

     System.out.print("Please enter a number between 1 and 30: ");// Calls for user input 
     number2 = input.nextInt();// Stores user input for number 2 

     System.out.print("Please enter a number between 1 and 30: ");// Calls for user input 
     number3 = input.nextInt();// Stores user input for number 3 

     System.out.print("Please enter a number between 1 and 30: ");// Calls for user input 
     number4 = input.nextInt();// Stores user input for number 4 

     System.out.print("Please enter a number between 1 and 30: ");// Calls for user input 
     number5 = input.nextInt();// Stores user input for number 5 

     System.out.printf("%d ", number1); 
     for (int i = 1; i <= number1; i++) 
      System.out.print("*"); 
     System.out.println(); 

     System.out.printf("%d ", number2); 
     for (int i = 1; i <= number2; i++) 
      System.out.print("*"); 
     System.out.println(); 

     System.out.printf("%d ", number3); 
     for (int i = 1; i <= number3; i++) 
      System.out.print("*"); 
     System.out.println(); 

     System.out.printf("%d ", number4); 
     for (int i = 1; i <= number4; i++) 
      System.out.print("*"); 
     System.out.println(); 

     System.out.printf("%d ", number5); 
     for (int i = 1; i <= number5; i++) 
      System.out.print("*"); 
     System.out.println(); 

    } 

} 

誰能幫我引導了正確的方向。

謝謝。

+0

函數調用........... – 2015-03-31 23:46:38

回答

0

嘗試這種情況:

if(Math.max(new int[]{number1,number2,number3,number4,number5}) <= 30 && Math.min(new int[]{number1,number2,number3,number4,number5}) >= 1){ 
    ...WITHIN YOUR RANGE... 
}else{ 

} 

這樣做是檢查該組的最大值小於或等於30,且該組最小大於或等於1,然後執行代碼。

0

如果您的程序目的是要求用戶輸入1到30之間的5個數字,我認爲您應該爲每個輸入任務編寫'while'循環以確保每個數字都在範圍內並且再次詢問用戶是否不是。

1

您可以通過在while循環中保留nextInt()並使用計數器來跟蹤想要讀取的所需輸入數量來避免多餘的代碼。當所有有效的數字被讀取時退出循環。

Scanner input = new Scanner(System.in); 
    byte maxNum = 31; 
    byte minNum = 1; 

    int[] numbers = new int[5]; 

    int number = 0; 
    int i = 0; 

    while (i<5) { 

     System.out.print("Enter number("+(i+1)+") between "+minNum + " and "+maxNum+ " : "); 
     number = input.nextInt(); 

     if(number >=minNum && number <= maxNum){ 
      numbers[i] = number; 
      i++; 
     }else{ 
      System.out.println("--------Invalid Number :"+number+ " "); 
     } 
    } 

    System.out.print("Entered Numbers :"); 

    for(int n : numbers){ 
     System.out.print(n + ","); 
    } 

注意:對於字符和輸入範圍以外的代碼可能會失敗。