2017-05-03 6 views
-2

私はJavaプログラミングには新しいので、電卓を作ろうと思っていました。私はコードを作ったが、唯一の問題はそれが一度しか動かないことである。私はそれを "ループ"にする方法があるかどうか疑問に思っていました。それは私が意味するところは、メインの方法の始めに質問を追加して、計算機をもう一度実行できるようにすることです。ここに私が持っているコードは...Javaでルーピングプログラムを取得するには

import java.util.Scanner; 

public class calculatorFull { 
    public static void main(String[] args){ 
     int op; 
     double num1, num2; 
     Scanner operation = new Scanner(System.in); 
     System.out.println("1 - Add\n2 - Subtract\n3 - Multiply\n4 - Divide"); 
     System.out.print("Which operation would you like to perform? "); 
     op = operation.nextInt(); 

     if((op != 1) && (op != 2) && (op != 3) && (op != 4)){ 
      System.out.println("That wasn't an option..."); 
     }else{ 
      System.out.print("First number: "); 
      num1 = operation.nextDouble(); 
     System.out.print("Second number: "); 
      num2 = operation.nextDouble(); 


      if(op==1){ 
       Add(num1, num2); 
      }else if(op==2){ 
       Sub(num1, num2); 
      }else if(op==3){ 
       Mult(num1, num2); 
      }else if(op==4){ 
       Div(num1, num2); 
      } 
    } 
} 

public static void Add(double x, double y){ 
     double numsum; 
     numsum = x + y; 
     System.out.printf("%s + %s = %s", x, y, numsum); 
    } 

    public static void Sub(double x, double y){ 
     double numsum; 
     numsum = x - y; 
     System.out.printf("%s - %s = %s", x, y, numsum); 
    } 

    public static void Mult(double x, double y){ 
     double numsum; 
     numsum = x * y; 
     System.out.printf("%s * %s = %s", x, y, numsum); 
    } 

    public static void Div(double x, double y){ 
     double numsum; 
     numsum = x/y; 
     System.out.printf("%s/%s = %s", x, y, numsum); 
    } 
} 

ご協力ありがとうございます!

Btw、これはこの質問(User input to repeat program in Java)とは異なる可能性があると思います。私は、私が呼び出す方法が異なり、メインから1つのメソッドだけを呼び出すように変更されました。それが解決策を変更するかどうか、あるいは同じ問題であるかどうかは分かりませんが、それがあるかもしれないことを指摘してくれてありがとう。

+0

'for'ループと' while'ループをチェックしてください。 –

+0

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html –

+0

[Javaでのプログラムを繰り返すユーザー入力]の重複の可能性あり(http://stackoverflow.com/questions/26367626/user- input-to-repeat-program-in-java) – Tom

答えて

0

プログラムを終了する(つまり、オプションで-1)ためにセンチネル値を設定し、whileループで常にチェックする変数を追跡することができます。 opが-1になると終了します。それ以外の場合は、whileループ内でロジックを再起動します。

int op = 0; 
    while(op != -1) { 
     double num1, num2; 
     Scanner operation = new Scanner(System.in); 
     System.out.println("1 - Add\n2 - Subtract\n3 - Multiply\n4 - Divide"); 
     System.out.print("Which operation would you like to perform? "); 
     op = operation.nextInt(); 

     if((op != 1) && (op != 2) && (op != 3) && (op != 4)){ 
      System.out.println("That wasn't an option..."); 
     }else{ 
      System.out.print("First number: "); 
      num1 = operation.nextDouble(); 
     System.out.print("Second number: "); 
      num2 = operation.nextDouble(); 


      if(op==1){ 
       Add(num1, num2); 
      }else if(op==2){ 
       Sub(num1, num2); 
      }else if(op==3){ 
       Mult(num1, num2); 
      }else if(op==4){ 
       Div(num1, num2); 
      } 
    } 
+0

私はこれを試してみると思います。どうもありがとうございます! – bh34e5

+0

@ bh34e5助けてくれてうれしいです:)もしこれがあなたを助けてくれたら、答えを受け入れるなら、私はそれを感謝します。素晴らしい日を過ごしてください:) – dddJewelsbbb

+0

私はそれを行うとき、opはまだ初期化されていないと言います – bh34e5

0
int continue = 0; 

while(continue == 0){ 
    // Put your calculator code here 
    System.out.println("Enter 1 to exit or 0 to continue"); 
    choice = Integer.parseInt(br.readLine()); 

} 

これを試してみてください。

UPDATE:

使用この:

import java.io.*; 

public class StackOverFlow 
{ 
    // arguments are passed using the text field below this editor 
    public static void main(String[] args) throws IOException 
    { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    int cont = 0; 

    while(cont == 0){ 
    System.out.println("Inside"); 
    // Put your calculator code here 
    System.out.println("Enter 1 to exit or 0 to continue"); 
    cont = Integer.parseInt(br.readLine()); 

} 
    System.out.println("Outside"); 
    } 
} 
+1

答えとしてそれを掲示する前に、あまりにもそれを試してください。 – Tom

+0

これは無限にループする – dddJewelsbbb

+0

@Tom指摘してくれてありがとう。私はそれを軽く取って、ちょうどそれに直接答えました。 –

0

最も簡単な方法はこれを行うには、計算が完了して印刷するときだけmainメソッドを呼び出すことです。 main(null)を使用してこれを実現できます。 if-elseブロックの直後に追加してください。以下のコード:

 if(op==1){ 
      Add(num1, num2); 
     }else if(op==2){ 
      Sub(num1, num2); 
     }else if(op==3){ 
      Mult(num1, num2); 
     }else if(op==4){ 
      Div(num1, num2); 
     } 
     System.out.println(); // prints blank line 
     main(null);// calls main method (re-runs program) 

これで操作が完了し、処理が繰り返されます。

+1

これは非常に役に立ちます。私はバッチプログラミングでそれが起こる方法があることを知っています、あなたは単に "goto main"と言うでしょうが、私はjavaでそれを行う方法はないと思いました。これだけです。レスポンスありがとう! – bh34e5

関連する問題