有问题...做循环

时间:2011-10-28 11:55:29

标签: java

我对这个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);
    }
}   

5 个答案:

答案 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;