2014-02-17 41 views
0

我目前正在製作一個程序,允許您選擇4個選項中的1個,爲了正確執行此操作,我必須使用循環。這個簡單的程序的要點是允許用戶選擇1 4種選擇:命令提示凍結後按回車,無效循環

1 - 由 2設置%至AVG - 輸入級(並採取進入那些成績平均) 3 - 獲取平均(我假設平均等級和平均百分比) 4 - 退出

目前,我沒有得到編譯錯誤,並且能夠運行該程序。每當我輸入1並按回車,出於某種原因,號碼進入,但它只是一個空格,我不得不按CTRL-C解凍它。我也不知道如何獲得「while(choice!= 1);」行來正確執行。

我需要讓程序循環,允許用戶按他們想要的次數執行所有的選項,直到他們按下4退出,所以我使用了一個定點控制的循環。這是我的代碼,我是初學者,所以我可能沒有完成整個「循環」過程。謝謝!

import java.util.Scanner; 

public class ExerciseThree 
{ 
public static void main (String[] argsv) 
{ 

    float percent = 0; 
    double grade = 0; 
    double totalAvg = 0; 
    double total = 0; 
    double gradeAvg = 0; 

    int gradeCounter = 0; 
    int quit; 
    int choice; 
    int choiceOne; 


    Scanner input = new Scanner (System.in); 

    System.out.println("Please choose one of the following: \n 1 - Set percentage of total for new grades \n 2 - Enter new grades \n 3 - Get average \n 4 - Quit "); 
     choice = input.nextInt(); 


    while (choice != 4); 

     switch (choice) 
     { 

      case 1: 

      if(choice == 1) {  
       System.out.println("Enter a percentage to multiply by"); 
       percent = input.nextFloat(); 

      break; 
      } 

      case 2: 

      if (choice == 2) { 
       System.out.println("Enter grades"); 
       grade = input.nextDouble(); 
       total = total + grade; 
       gradeCounter = gradeCounter + 1; 
       gradeAvg = (double) total/gradeCounter; 
      break;  
      } 



      case 3: 

      if (choice == 3) { 
       System.out.println("You have chosen to get the average"); 
       totalAvg = totalAvg + percent * grade; 
       totalAvg = input.nextDouble();   
      break; 
      } 


      default: 

      if (choice == 4){ 
       System.out.println("You have chosen to quit"); 
       quit = input.nextInt(); 
      break; 
      } 



     } 
+1

'如果(選擇!= 4 ||選擇== 4)' - 這總是'true':/ – Maroun

+0

哦,我明白了!因爲任何選擇!= 4也會使1,2或3計數爲!= 4 – user3304333

+0

此外,當您切換(選擇)時,此後不需要「if」。因爲......你開關(選擇)已經做到了。 – Maroun

回答

1

我甚至不知道從哪裏開始...有你的代碼的多個錯誤:

while (choice != 4); 

刪除分號和包裝你switch{}

if (choice == 1) 

沒有必要在case內部放置if語句,這是多餘的

if (choice != 4 || choice == 4){ 

這始終是真實的,而且前面已經說過,if在每個case代碼塊的結尾在case代碼塊

case 1: 

if (choice == 1) {   
    System.out.println("Enter a percentage to multiply by"); 
    percent = input.nextFloat(); 

} 

多餘的,你需要放置一個break;聲明

+0

謝謝!我還有另外一個問題,無論何時按1並輸入百分比,我將如何返回4個選項的菜單?現在它只是循環「輸入一個百分比乘以」 – user3304333

+0

發生這種情況是因爲你的'choice'變量的值永遠不會改變,所以你進入一個無限循環,其中'choice'變量總是等於1 ... I認爲你應該對你的代碼的邏輯做一些修改 – Cirou

+0

我在想我可以做一個反控制的循環,所以一旦他們輸入一個百分比,它就會知道,然後它可以返回到菜單後,因爲這是所有他們會做。 – user3304333

1

在每種情況下,你應該把一個「休息」聲明。

case 1: 

     if (choice == 1) {   
      System.out.println("Enter a percentage to multiply by"); 
      percent = input.nextFloat(); 

因此,與其把:

case 1: 

     if (choice == 1) {   
      System.out.println("Enter a percentage to multiply by"); 
      percent = input.nextFloat(); 
      break; 

這是我看到的唯一問題。如果您有任何其他問題,請回答此問題。

+0

刪除'if'請,它是多餘的。 – Maroun

+0

我相應地改變了它,雖然我以前有斷言,並刪除它們,看看它是否可以解決問題(Idk XD) 但即使我刪除了if語句,當我運行該程序時,問題仍然存在,輸入一個數字,它顯示數字,然後顯示一個空格,我必須按Control-C退出該程序。 – user3304333

+0

我在修改之前加了一個{在開關之前! – user3304333