2016-12-17 2 views
-1

Я новичок в Java, и я пытаюсь закодировать калькулятор. Числа не вычисляются, и я не уверен, почему это происходит.Java Rookie Попытка закодировать калькулятор

Вот мой код:

import java.util.Scanner; 

public class Calculator { 
    public static void main(String[] args){ 

     System.out.println("Type in any 2 numbers: "); 
     Scanner math = new Scanner(System.in); 
     int number = math.nextInt(); 
     int num2 = math.nextInt(); 

     System.out.println("Which operation would you like to use? (+,-,*,/)"); 
     String oper = math.next(); 

     if (oper == "+"){ 
      int total = number + num2; 
      System.out.println(total); 
     } 
     else if (oper == "-"){ 
      int total = number - num2; 
      System.out.println(total); 
     } 
     else if (oper == "*"){ 
      int total = number * num2; 
      System.out.println(total); 
     } 
     else if (oper == "/"){ 
      int total = number/num2; 
      System.out.println(total); 
     } 
    } 

} 

ответ

1

вы должны использовать метод Equals в Java для сравнения строк. , когда вы используете «==» в классах, он сравнивает только рефренсы, но не значения. Это должно работать с этим исправить

public class Calculator { 
    public static void main(String[] args){ 

     System.out.println("Type in any 2 numbers: "); 
     Scanner math = new Scanner(System.in); 
     int number = math.nextInt(); 
     int num2 = math.nextInt(); 

     System.out.println("Which operation would you like to use? (+,-,*,/)"); 
     String oper = math.next(); 

     if (oper.equals("+")){ 
      int total = number + num2; 
      System.out.println(total); 
     } 
     else if (oper.equals("-")){ 
      int total = number - num2; 
      System.out.println(total); 
     } 
     else if (oper.equals("*")){ 
      int total = number * num2; 
      System.out.println(total); 
     } 
     else if (oper.equals("/")){ 
      int total = number/num2; 
      System.out.println(total); 
     } 
    } 
+0

Спасибо! Это сработало. – Ubermench

0

@Ran Koretzki правильно и у меня есть один из возможных вариантов улучшения для вашего кода. Вы читаете ввод от пользователя и присваиваете значения «целочисленные». Даже если этот код не запрашивает время компиляции или время выполнения, в вашем коде есть логическая проблема.

Вы делите два целых числа и присваиваете результат целому числу. Этот подход хорошо работает, когда вы пытаетесь разделить два целых числа, и если нет остатка. Но если в процессе деления есть остаток, вы потеряете этот остаток или долю. Чтобы решить эту проблему, вы должны прочитать свой ввод в двойные значения и присвоить результат операции двойному varaible.

Смежные вопросы