2014-12-09 4 views
-3

Когда я пытаюсь выполнить цикл dowhile в Java со строкой, он просто завершает программу без ошибки, не давая мне возможность войти, если я хочу продолжить. Как мне сделать цикл программы, если требуется, с помощью строки?DoWhile в Java

public static void main(String args[]) {   
    Scanner user_input = new Scanner (System.in); 
    Maths math = new Maths(); 

    double firstNum, secondNum; 
    String calcAgain = null; 

    do{ 


    System.out.println("Enter First Number: "); 
    firstNum = user_input.nextDouble(); 
    System.out.println("Enter Second Number: "); 
    secondNum = user_input.nextDouble(); 

    System.out.println("Please select an operation! (+,-,*,/)"); 

    String operation = user_input.next(); 

    if (operation.equals("+")) { 
     System.out.println(math.add(firstNum, secondNum)); 
    } 

    else if (operation.equals("-")) { 
     System.out.println(math.subtract(firstNum, secondNum)); 
    } 

    else if (operation.equals("*")) { 
     System.out.println(math.multiply(firstNum, secondNum)); 
    } 

    else if (operation.equals("/")) { 
     System.out.println(math.divide(firstNum, secondNum)); 
    } 

    else { 
     System.out.println("Invalid Function!"); 
    } 

    System.out.println("Would you like to do another calculation? "); 

    calcAgain = user_input.nextLine(); 


}while(calcAgain == "yes"); 
+0

Сделайте 'calcAgain.equals (« да »)'. Проверьте [Как сравнить строки в Java] (http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –

+1

Вы, кажется, правильно используете 'equals' в остальном вашей программы, почему бы не во время условия? – August

+0

См. [Как сравнить строки в Java?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) и [Пропуск nextLine() после использования nextInt ()] (http://stackoverflow.com/questions/13102045/skipping-nextline-after-use-nextint). – rgettman

ответ

3

Возможно, вы захотите посмотреть на операции с строкой для равенства. Условие while (calcAgain == "yes") не будет выполняться никогда, потому что вы сравниваете сам объект. Строковое равенство выполняется с помощью функции .equals().

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