2016-11-05 84 views
0

我已經制作了一個名爲subjectName的所有主題的數組。此代碼的目標是確保用戶只輸入有效數字(在1.0和10.0之間)。但我不知道該怎麼做。我創建了一個if語句,並在主題名不在0到10之間時返回,但不起作用。我不知道我該如何解決這個問題。我如何確保用戶只輸入0到10之間的數字?

編輯:subjectName是每個主題的名稱,所以它的字符串。 subjectGrade是雙倍的。都是陣列。忘了提到這一點。

這是我的代碼:

for (int i = 0; i < subjectName.length; i++) { 
      Scanner input = new Scanner(System.in); 
      System.out.print("What is your grade for: " + subjectName[i] + "? "); 
      subjectGrade[i] = input.nextDouble(); 

      if (subjectGrade[i] < 0.0 || subjectGrade[i] > 10.0) { 
       return; 
      } 
+0

'subjectName','invoer','vakCijfers'是什麼類型的? –

+0

你需要一個數字1-10或0-10?我不確定它的問題,但我很困惑 – Neo

+0

哦秒讓我改變它 –

回答

0

你應該使用while循環。在等級無效的情況下提問。

while(subjectGrade[i] < 0.0 || subjectGrade[i] > 10.0) 
{ 
    System.out.print("What is your grade for: " + subjectName[i] + "? "); 
    subjectGrade[i] = input.nextDouble(); 
} 

(GOES而不是if

無論如何,你的錯誤是,return語句不會重複上一個命令或任何東西。它從一個函數返回一個值...

+0

非常感謝你的工作! –

+0

Your'e welcome。下次要小心地清楚地寫下你的問題,而且,如果你把我的答案標記爲正確的話, ) – Neo

+0

順便說一句,我可以問你另一個問題,還是我需要做一個全新的話題? –

0

if有一種錯誤的變量。應該是​​,對吧?

if (vakCijfers[i] < 0.0 || vakCijfers[i] > 10.0) { 
+0

是的,我只是改變了它對不起 –

+0

subjectName是每個主題的名稱so它是一個字符串,subjectGrade是一個double,兩個都是數組, –

1
if(subjectGrade[i] < 0.0 || subjectGrade[i] > 10.0) { 
    i--; // subract one so we doesn't skip the one student who made incorrect input 
    // you can put return or continue here, but not necessary 
} 
1

只有加大我當輸入有效

Scanner input = new Scanner(System.in); 
for (int i = 0; i < subjectName.length;) { 

    System.out.print("What is your grade for: " + subjectName[i] + "? "); 
    double grade = input.nextDouble(); 
    if (grade > 0.0 && grade < 10.0) { 
     studentGrade[i++] = grade; 
    } 
    // else, loop repeats with same value of 'i' 
0

好了,到repat直到正確答案用途:

do{ 
    subjectGrade[i] = input.nextDouble(); 
}while(!isValid(subjectGrade[i]); 

isValid(double Grade)檢查有效性條件。

相關問題