我对这个do while
循环有点问题;当我运行程序时,它至少部分地工作,我的意思是首先你需要选择从C到F或从F到C的转换,并且在输入值之后程序停止我想要做的是继续询问值,直到你输入3.我尝试用do while
循环来做但是它没有用,所以如果有人有任何想法我会很感激。这是代码:
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);
}
}
答案 0 :(得分: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
在阻止扫描输入之前。
按原样,如果您在第一个块输入任何数字,程序将进入循环并按您的需要运行。所以你快到了!
答案 1 :(得分:0)
代码确实有效。
问题很可能就是问题int choice = input.nextInt();
在do
之前
删除它,然后更改
choice = input.nextInt();
到
int choice = input.nextInt();
答案 2 :(得分:0)
除了你在循环之外有int choice = input.nextInt();
这个在显示菜单之前不必要地输入的事实,似乎所有工作都相对正常。您可以在循环中声明int choice
choice = input.nextInt();
(即只需将其更改为 int
choice = input.nextInt();
。)
答案 3 :(得分:0)
我测试了您的代码,如果您将行int choice = input.nextInt();
(在do{} while()
阻止之前)更改为int choice;
,它就可以正常工作。
正如其他人已经提到的那样,您不应该在do{} while()
阻止之前阅读输入,因为尚未提出问题。
答案 4 :(得分:0)
您在默认情况下忘记了break;