2016-03-01 57 views
0

我試圖提示用戶輸入一個介於1和12之間的值。如果他們輸入的值超出此範圍(EX -15),我需要繼續提示直到他們進入一個在1-12的值。當用戶輸入一個指定範圍內的值時(1-12)它需要打印一個時間表,其中包含整數1乘以輸入數字的結果。到目前爲止,我相信我有這個佈局一些什麼正確的,但我知道我失去了一些東西,但無法弄清楚這裏的代碼:試圖讓用戶輸入介於兩個值之間

package times_Table; 

import java.util.Scanner; 

public class Times_Table { 

    public static void main(String[] args) { 

     Scanner sc = new Scanner(System.in); 
     final int TOTAL = 5; 

     System.out.print("Enter an integer between 1 and 12:"); 
     int input = sc.nextInt(); 
     int numbers = input; 

     //If the input is out of the range 1-12 keep going 
     //If the input is in the range of 1-12 stop 

     //Need to find a way to keep looping if the integer inputed is  out of the range 1-12 
     while (numbers>1 && numbers<12) { 
      if (numbers<1 && numbers>12) { 
       for (int i = 1; i <= TOTAL; i++) { 
        for (int j = 1; j<=TOTAL; j++) { 
         System.out.print(i*j + "\t"); 
        } 
        System.out.println(); 
       } 
      } else { 
       if (numbers < 1 && numbers > 12) { 
        System.out.print("Enter an integer between 1 and 12:"); 
       } 
      } 
     } 
    } 
} 
+4

它會幫助你很多,如果你將通過代碼在你的IDE調試步驟,看什麼在發生每個陳述。你試過了嗎? –

+0

你需要重做你的'if/else'流程。應該是數字在裏面,做數學運算,否則用'Scanner'再次請求輸入。現在你的while循環正在使if else循環無用。 –

+0

請注意澄清*它需要打印一個時間表,結果乘以整數1到輸入數字... *? – aribeiro

回答

0

更改,而像這樣:

while (keepGoing) { 
    while (numbers < 1 || numbers > 12) { 
     System.out.print("Enter an integer between 1 and 12:"); 
     numbers = sc.nextInt(); 
    } 

    for (int i = 1; i <= numbers; i++) { 
     for (int j = 1; j<=numbers; j++) { 
      System.out.print(i*j + "\t"); 
     } 
     System.out.println(); 
    } 
} 
+0

謝謝@Jordy幫助。 –

+0

很高興我的回答有所幫助。對不起,但我不明白這一點「它需要打印一個時間表,結果是整數1乘以輸入數字。」 (對不起,英文不是我媽媽的舌頭) –

+0

當輸入範圍內的值需要打印出包含許多行和列的時間表時。 EX說我使用2作爲範圍內的數字時間表顯示與2行和2列。到目前爲止,無論final int TOTAL = 5,我都將其設置爲5的默認值。 –

1

推薦的重複提示模式將是一個do-while循環。

Scanner sc = new Scanner(System.in); 

int input; 
do { 
    System.out.print("Enter an integer between 1 and 12: "); 
    input = sc.nextInt(); 

    if (input < 1 || input >= 12) { 
     System.out.println("Invalid number input!"); 
    } 
} while (input < 1 || input >= 12); 

而這種打印表格

for (int i = 1; i <= input; i++) { 
    for (int j = 1; j <= input; j++) { 
     System.out.printf("%3d\t", i*j); 
    } 
    System.out.println(); 
} 

像這樣

Enter an integer between 1 and 12: 11 
    1 2 3 4 5 6 7 8 9 10 11 
    2 4 6 8 10 12 14 16 18 20 22 
    3 6 9 12 15 18 21 24 27 30 33 
    4 8 12 16 20 24 28 32 36 40 44 
    5 10 15 20 25 30 35 40 45 50 55 
    6 12 18 24 30 36 42 48 54 60 66 
    7 14 21 28 35 42 49 56 63 70 77 
    8 16 24 32 40 48 56 64 72 80 88 
    9 18 27 36 45 54 63 72 81 90 99 
10 20 30 40 50 60 70 80 90 100 110 
11 22 33 44 55 66 77 88 99 110 121 
相關問題