do ... whileループに問題がある

私はこの do while ループに少し問題があります。私がプログラムを実行すると、少なくとも部分的には、少なくとも部分的には、CからFへ、またはFからCへの変換のために選択する必要があります。私が 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

5 答え

あなたの他の質問のように、ユーザーに入力を促す前に入力をスキャンします。

以下の2行目を削除する必要があります:

    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

入力をスキャンする前にブロックします。

つまり、最初のブロックに数字を入力すると、プログラムはループに入り、必要に応じて動作します。だから、あなたは近くにいる!

4
追加された

コードは機能します。問題はおそらく

int choice = input.nextInt();

before the do

これを削除して変更します

choice = input.nextInt();

int choice = input.nextInt();
0
追加された
choice = input.nextInt(); int choice = input.nextInt(); に変更してもよろしいですか?
追加された 著者 Nivas,
私はそれを変更し、コンパイルするときよりも "スレッドの例外"メイン "java.lang.Error:未解決のコンパイルの問題:選択肢をDegreesInConversion2.main(DegreesInConversion2.java:48)の変数に解決できません"
追加された 著者 Kiril,
ここで48行目} while(choice!= 3);
追加された 著者 Kiril,

メニューを表示する前に不必要に入力されているループの外側にある int choice = input.nextInt(); という事実以外にも、それはすべてうまく動作するようです。 choice = input.nextInt(); を持つループ内で int choice を宣言するだけで、コード> choice = input.nextInt();

0
追加された

私はあなたのコードをテストしました。 int choice = input.nextInt(); (コードのdo {} while()ブロックの直前) int choice;

他の人がすでに述べたように、あなたの do {} while()ブロックの前に入力を読んではいけません。

0
追加された

デフォルトのケースの後に break; を忘れた

0
追加された