switch ステートメントでループを作成しようとしています。ユーザーが 1 ~ 4 のいずれかを入力しないと、「間違ったオプションを入力しました」というメッセージが繰り返し表示されます。私はリンダのビデオに取り組んでいます。ループをどこに置くかわかりません。現在、ループさせる方法が見つかりません。それはスイッチにありますか、それともgetInputメソッドにありますか。これを行うことは可能ですか?知ってる人いたらよろしくお願いします。私はEclipse、Java 7を使用しています。
public static void main(String[] args) {
String s1 = getInput("Enter a numeric value: ");
String s2 = getInput("Enter a numeric value: ");
double result = 0;
do {
String op = getInput("Enter 1=Add, 2=Subtract, 3=Multiply, 4=Divide");
int opInt = Integer.parseInt(op);
switch (opInt)
{
case 1:
result = addValues(s1, s2);
break;
}
} while(opInt<1 || opInt >4);
編集エラー メッセージ...
この行に複数のマーカー - opInt を変数に解決できません
opInt を変数に解決できません
// 他の数学演算子の中でも addValues というメソッドがあります
private static double addValues(String s1, String s2) throws NumberFormatException { double d1 = Double.parseDouble(s1); double d2 = Double.parseDouble(s2); double result = d1 + d2; return result; } private static String getInput(String prompt) { BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print(prompt); System.out.flush(); try { return stdin.readLine(); } catch (Exception e) { return "Error: " + e.getMessage(); } }
編集 Tal と Quoi から提供された解決策に問題があります。Quoiを使用すると、opIntを変数に解決できないというエラーが発生します.Talでは何も起こらないためです。
だから私は次のことをしました...
String s1 = getInput("Enter a numeric value: ");
String s2 = getInput("Enter a numeric value: ");
String op = getInput("Enter 1=Add, 2=Subtract, 3=Multiply, 4=Divide");
//convert opInt into integer
int opInt = Integer.parseInt(op);
if (opInt <1 || opInt >4) // used a if statement
{
getInput("Enter 1=Add, 2=Subtract, 3=Multiply, 4=Divide");
}
double result = 0;
{
switch (opInt)
{
...........
...........
}
}
if ステートメントを使用すると、メソッドは switch ステートメントをコールバックしますが、正しいオプションを選択した後、「You enter wrong option」と「the answer is 0.0」の出力行が表示されるため、計算は行われません。これが単純な解決策なのか、それとも何なのかわかりません。
EDIT スイッチの外側で while ループを実行しようとしました。何が起こっているのかというと、1 または 4 以外を選択すると、有効なオプションを入力したかどうかに関係なく、「1 = 加算、2 = 減算、3 = 乗算、4 = 除算を入力してください」というメッセージが再度表示されます。
do
{
getInput("Enter 1=Add, 2=Subtract, 3=Multiply, 4=Divide");
} while (opInt <1 || opInt >4);
double result = 0;
{
switch (opInt)
{
case 1:
result = addValues(s1, s2);
break;
...........
...........
}
}