2016-04-03 34 views
0

Bu temel metin tabanlı hesap makinesini Java'ya yazmaya başladım ve 2 sayı eklediğimde, ekleme bölümünü çalıştırdığımda bir sorunla karşılaştım, '9' ve '9' deyin. Cevap, olması gerektiği gibi 18 yerine 99 yerine geliyor. Tamsayı saklamadığım için mi, kullanıcının girişini dizge olarak saklıyorum. Teşekkürler, herhangi bir yardım için minnettarım. Muhtemelen anlatabileceğin gibi, kodlamayı yeni yapmaktayım.Metin Tabanlı Hesap makinesi çalışmıyor

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

Evet, bir dize üzerinde "+" operatörü dize concatination olduğu çünkü. Arayıcılara ya da iki misline veya başka bir şeye dönüşmeniz gerekiyor. Taşma sorunlarının da farkında olun. Tamsayılarla bölün, muhtemelen beklediğiniz şeyi yapmayacaktır, bu yüzden yüzer veya çiftleri düşünün. – KevinO

cevap

2

Sen ek bir int değere String dönüştürmek gerekir. Böyle bir şey yapın: İki dizeleri eklemeye çalıştığınız

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

3

. Bu sadece dizeleri yan yana koyacaktır. Bunları eklemek isterseniz, önce bunları iki katına ayırmanız gerekir. Deneyin:

  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

Bu yaklaşım ekleme sorusunu çözerken (modulo taşma sorunları), kodun bölüm için yer olduğunu ve tamsayı bölümünün beklendiği gibi performans göstermeyeceğini unutmayın. – KevinO

+0

@KevinO iyi nokta - cevabımı düzenledim – nhouser9

İlgili konular