2016-04-03 6 views
0

この基本的なテキストベースの電卓をJavaで書き始めたばかりで、追加部分を実行したときに2つの数字、たとえば「9」と「9」を追加すると、答えは18の代わりに99になります。私は整数を格納していないので、ユーザーの入力を文字列として格納していますか?ありがとう、何か助けていただきありがとうございます。おそらくあなたが言うことができるように、私はむしろコーディングに新しいです。テキストベースの計算機が動作しない

import java.util.Scanner; 
import java.lang.String; 

public class calc { 
    public static void main(String[] args) throws InterruptedException { 
     while (true) { 
      Scanner in = new Scanner(System.in); 
      System.out.println("Type in what you would like to do: Add, Subtract, Multiply, or Divide"); 
      String input = in.nextLine(); 
      if (input.equalsIgnoreCase("Add")) { 
       System.out.println("Type in your first number:"); 

       String add1 = in.nextLine(); 
       System.out.println("Type in your second number"); 
       String add2 = in.nextLine(); 

       String added = add1 + add2; 
       System.out.println("Your answer is:" + added); 
      } 
      else if(input.equalsIgnoreCase("Subtract")) { 
       System.out.println("Type in your first number:"); 
      } 
      else if(input.equalsIgnoreCase("Multiply")) { 
       System.out.println("Type in your first number:"); 
      } 
      else if(input.equalsIgnoreCase("Divide")) { 
       System.out.println("Type in your first number:"); 
      } 
      else { 
       System.out.println("This was not a valid option"); 
      } 
     } 
    } 
} 
+0

はい、それは文字列の "+"演算子が文字列連結であるためです。 intergerやdoubleなどに変換する必要があります。オーバーフローの問題にも注意してください。整数で除算すると、おそらく期待通りの結果が得られないので、浮動小数点数または倍精度を考慮してください。 – KevinO

答えて

2

あなたは追加のためint値にStringを変換する必要があります。このような何かを:あなたは2つの文字列を追加しようとしている

Integer result = Integer.parseInt(add1) + Integer.parseInt(add2)

3

。これは、文字列を互いに隣に置くだけです。それらを追加したい場合は、それらを最初に倍精度として解析する必要があります。試してください:

  System.out.println("Type in your first number:"); 
      double add1 = Double.parseDouble(in.nextLine()); 
      System.out.println("Type in your second number"); 
      double add2 = Double.parseDouble(in.nextLine()); 

      double added = add1 + add2; 
      System.out.println("Your answer is:" + added); 
+0

このアプローチでは追加の問題(モジュロオーバーフローの問題)が解決されますが、コードには除算の余地があり、整数除算は期待通りに機能しません。 – KevinO

+0

@KevinO良い点 - 私の答えを編集 – nhouser9