2015-04-17 10 views
-2

Без прямого ответа мне может помочь кто-нибудь с этим простым калькулятором, который я пытаюсь написать? Все, кажется, работает хорошо, за исключением самого конца, когда я прошу пользователя сделать выбор для добавления, вычитания, умножения или деления. Это не позволяет мне вводить мой выбор в консоли. Я думаю, что это имеет какое-то отношение к массиву String, который я создал, и к оператору if. Не уверен. Любые советы будут высоко оценены.Простой калькулятор java-консоли

import java.util.Scanner; 

public class simpleCalculator { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 

     //declare my variables 
     int firstNum; 
     int secondNum; 
     int division = 0, addition = 0, subtraction = 0, multiplication = 0; 
     String userChoice = ""; 
     String choices[] = {"add","multiply","divide","subtract"}; 

     //ask for user input 
     System.out.print("Please enter first number: "); 
     firstNum = input.nextInt(); 
     System.out.print("Please enter second number: "); 
     secondNum = input.nextInt(); 
     System.out.println("What type of operation would you like to perform on these numbers?"); 
     System.out.println("add " +"multiply " +"subtract " + "divide "); 
     userChoice = input.nextLine(); 

     if (userChoice == "add"){ 
        System.out.print("Answer = " + addition); 
     } 


     //calculator formulas 
     addition = firstNum + secondNum; 
     multiplication = firstNum * secondNum; 
     subtraction = firstNum - secondNum; 
     division = firstNum/secondNum; 

    } 

} 
+0

просто добавить еще один 'input.nextLine()' 'Перед userChoice = input.nextLine();' и сравнивать строки, используйте 'userChoice .equals ("добавить")' – Baby

+0

продолжить ваша программа, работающая для разных входов, использует цикл while - 'while (input.hasNext() {// ваш код}' – Razib

+0

Попробуйте использовать вместо 'input.nextLine()' use 'input.next()' – MLavrentyev

ответ

1

nextInt() считывает только номер, а не конец строки после номера. После каждого nextInt() вам понадобится nextLine(), чтобы использовать оставшуюся часть строки.

Кроме того, прежде чем бить головой о стену следующее заявление не будет работать для вас:

if (userChoice == "add") 

== тесты на равенство ссылок.

.equals() тесты для равенства значений. Так что вам нужно что-то вроде этого: вместо

if (userChoice.equals("add")) 

Я хотел, чтобы дать вам эту халяву, потому что я люблю свое отношение, что вы не хотите, чтобы кто-нибудь дать вам ответ. Это здорово, что вы хотите научиться этому. Продолжайте хорошую работу.

+0

хорошо, что я надеялся omplish был тест, который пользователь вводит с этим массивом String, который я создал и, по-видимому, пока не использовал. Еще раз спасибо ребятам за советы. Я еще больше буду обманывать эту штуку. –

+0

В любом случае, моя точка удерживается. Вы не должны использовать == для сравнения значений String. Вы всегда должны использовать функцию .equals() при сравнении строковых значений. Ваше утверждение в его нынешнем виде будет ложным, даже если значение userChoice равно «добавить». –

0

Сказать, что String a == Строка b означает, что вы сравниваете две строки, чтобы увидеть, есть ли у них ссылочное равенство, тогда как a.equals (b) будет сравнивать значения, хранящиеся в строке.

Ссылка равенство используется для сравнения того, ссылаются ли две ссылки на объекты на один и тот же объект, который в этом случае нельзя использовать, поскольку вы пытаетесь сравнить, равно ли значение двух переменных. Так, безусловно, идти с

if(userChoice.equals("add")) 
+0

Итак, чтобы быть ясным, если бы у меня был массив String, и я хотел сравнить их с тем, что вводил пользователь, тогда я бы использовал ==? –

+0

Если вы хотите сравнить значения a и b, используйте метод a.equals (b) –

+0

В этом случае вам не потребуется использовать == для сравнения двух строк. Надеюсь, это поможет :) –

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