2011-10-28 55 views
0

我有一個小問題,這個do while循環;當我運行該程序時,它至少部分地工作,我的意思是首先你需要做出從C到F或從F到C的轉換的選擇,並且在你輸入值之後程序停止了我想要做的是繼續詢問值,直到你輸入3.我試圖用do while循環做到這一點,但它不工作,所以如果有人有任何想法,我將不勝感激。下面是代碼:有問題做了... while Loop

import java.util.Scanner; 

public class DegreesInConversion2 { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Conversion table: "); 
     int choice = input.nextInt(); 
     do { 
      System.out.println(); 
      System.out.println("1 for convertion from Celsious to Fahrenhait: "); 
      System.out.println("2 for convertion froom Fahrenheit to Celsious: "); 
      System.out.println("3 for Exit: "); 
      System.out.println(); 
      System.out.println("Make a choice between 1 - 3 "); 
      choice = input.nextInt(); 
      System.out.println(); 
      switch (choice) { 
      case 1: 
       System.out.println("Enter temperature in Celsious: "); 
       double cel = input.nextDouble(); 
       if (cel < -273.15) { 
        System.out.println("Invalid values, please enter temperature greater than -273.15 in C:"); 
       } else { 
        System.out.println("You enetered " + cel + "C " + "which is " + (((cel * 9)/5) + 32) + "F"); 
       } 
       break; 
      case 2: 
       System.out.println("Enter temperature in Farhneit: "); 
       double far = input.nextDouble(); 
       if (far < -459.67) { 
        System.out.println("Invalid values, please enter temperature greater than -459.67 in F:"); 
       } else { 
        System.out.println("You enetered " + far + "F " + "which is " + (((far - 32) * 5)/9) + "C"); 
       } 
       break; 
      case 3: 
       System.out.println("Goodbyu have a nice day: "); 
       break; 
      default: 
       System.out.println("Invalid entry: Please enter a number between 1-3:"); 
      } 
     } while (choice != 3); 
    } 
} 

回答

4

your other question,在這裏你提示輸入用戶之前掃描輸入。

您需要刪除下面第二行:據

System.out.println("Conversion table: "); 
    int choice = input.nextInt(); 
    do 

與您的代碼,它輸出

Conversion table: 

,然後阻止等待輸入。而您希望它繼續進入while循環並輸出

1 for convertion from Celsious to Fahrenhait: 
2 for convertion froom Fahrenheit to Celsious: 
3 for Exit: 

Make a choice between 1 - 3 

在阻止掃描輸入之前。

因爲如果您在第一個程序段中輸入任何數字,程序將進入循環並按您的要求運行。所以你快到了!

0

該代碼確實有效。問題是最有可能的

int choice = input.nextInt(); 
do

除了事實刪除此,並改變

choice = input.nextInt(); 

int choice = input.nextInt(); 
+0

我改變它,比當我編譯我「在線程異常‘得到這個消息的主要’java.lang.Error的:未解決的問題,編譯: \t選擇不能解析爲一個可變 \t在DegreesInConversion2.main(DegreesInConversion2.java:48)」 – Kiril

+0

其中線48是}而(選擇= 3!); – Kiril

+0

您確定將'choice = input.nextInt();'改爲了'int choice = input。nextInt()'? – Nivas

0

您有:int choice = input.nextInt();外在顯示m之前不必要地獲得輸入的循環enu,它似乎都工作得比較好。你可以在你有choice = input.nextInt();的循環內聲明int choice(即只需將其更改爲intchoice = input.nextInt();)。

0

我測試了您的代碼,如果您將行int choice = input.nextInt();(就在您的do{} while()塊之前)更改爲int choice;,它會正常工作。

正如其他人已經提到的,你不應該在你的do{} while()塊之前閱讀輸入,因爲這個問題還沒有被問到。

0

你忘了break;默認情況後