2016-03-28 1 views
0

Я делаю простой калькулятор Java для школы, который работает отлично. Однако мне нужно добавить цикл while, который запрашивает у пользователя, хотят ли они продолжить да/нет. Я не могу понять, где я должен поставить заявление while. Я попытался поставить выше оператора if, я попытался под ним и добавил его в каждый оператор if и else if и до сих пор не может заставить его работать. Где вы должны поместить цикл while в оператор if и else if, чтобы получить все возможности для запуска цикла while?Добавление while loop with if statement java

while (input.toUpperCase().equals("y")) 
System.out.println("Do you want to continue? (y/n)"); 
input = calc.nextLine(); 

import java.util.Scanner; 

public class loops { 

public static void main(String[] args) { 

Scanner calc = new Scanner (System.in); 
double firstNum, secondNum, answer; 
String input = ""; 

System.out.println("what would you like to do"); 
System.out.println("a. Add two numbers. "); 
System.out.println("b. Subtract two numbers. "); 
System.out.println("c. Multiply two numbers. "); 
System.out.println("d. Divide two numbers. "); 
System.out.println("Select a letter"); 
input.calc.nextLine(); 

if (input.equals("a")) { 

System.out.println("Please enter your first number: "); 
firstNum = calc.nextDouble(); 
System.out.println("Enter your second number: "); 
secondNum = calc.nextDouble(); 

answer = firstNum + secondNum; 
System.out.println("your answer is: " + String.valueOf (answer)); 

else if (input.equals("b")) { 
System.out.println("Please enter your first number: "); 
firstNum = calc.nextDouble(); 
System.out.println("Enter your second number: "); 
secondNum = calc.nextDouble(); 

answer = firstNum - secondNum; 
System.out.println("your answer is: " + String.valueOf (answer)); 
} 

} 
} 
} 
+0

Можете ли вы опубликовать весь фрагмент? Было бы полезно также увидеть блок 'else'. – senschen

+0

использовать инструкцию 'do-while'. поместите свою вычислительную функциональность внутри блока do, что заставляет ее выполнять хотя бы один раз, а затем проверяет, продолжается или нет в вашем выражении – haifzhan

+2

'input.toUpperCase(). equals (" y ")' Это условие никогда не будет равно true. Вы конвертируете ввод пользователя в верхний регистр, а затем проверяете 'y' как строчный. –

ответ

1

Я думаю, что в этом случае вы должны поставить if-else внутри while. Похоже, вы хотите выполнить if до определенного случая, поэтому правильный способ сделать это состоит в том, чтобы окружить if каким-то условным циклом (do-while также может быть уместным здесь, если вы хотите, чтобы он прошел по крайней мере один раз).

Редактировать: Вы также можете исправить это состояние на while. Как отмечено в комментариях к вопросу, input.toUpperCase().equals("y") никогда не будет оцениваться до true.

+0

Я сейчас работаю, но я просто использовал текстовый редактор, чтобы добавить в оператор else if. Так что я ставлю цикл while выше и просто гнездю else, если там? – Nooberistic

+0

Да. Сначала сделайте то, что сейчас, а затем 'if-else'. – senschen

0

Как указывалось ранее do while цикл должен быть использован, но если вы хотите, чтобы пойти с while тогда Ваш код должен выглядеть следующим образом ->

Scanner calc = new Scanner(System.in); 
double firstNum, secondNum, answer; 
String input ="y"; 



    while (input.toUpperCase().equals("y")) { 
     System.out.print("Do you want to continue? (y/n)"); 
     input = calc.nextLine(); 
     if (input.equals("a")) { 
      System.out.print("Please ,enter your first number: "); 
      firstNum = calc.nextDouble(); 
      System.out.print("Enter your second number: "); 
      secondNum = calc.nextDouble(); 

      answer = firstNum + secondNum; 
      System.out.println("Your answer is: " + String.valueOf(answer));  
      } 
    } 
+0

Ohhh ok, так что я просто гнезжу все в цикле while или do while while, правильно? – Nooberistic

+0

Да, сэр :) дайте мне знать, если это работает. !!!! –

0

Вы можете использовать do-while цикл, чтобы реализовать функциональные возможности. Do-while будет выполняться хотя бы один раз, а затем проверять непрерывное выражение - true или false.

Ваш код имеет 2 функции:

1. calculate the sum of 2 numeric inputs. 
2. checks continuous calculating or not. 

Одним из решений, разделяющую эти две функции и облегчает добавление/удаление любого из них. Было бы легко проверить/отладить ваш код.

import java.util.*; 

public class Test{ 
    static Scanner calc = new Scanner(System.in); 
    static String input =""; 
    static boolean keepRunning = false; 
    double firstNum, secondNum, answer; 


    public static void main(String[]args){ 
     Test test = new Test(); 
     do{ 
      test.calculate(calc); // calculate your 2 numeric inputs 

      // update boolean flag indicate continuous calculating or stop 
      System.out.print("Do you want to continue? (y/n)"); 
      input = calc.next(); 
      keepRunning = input.toLowerCase().equals("y"); 
     }while(keepRunning); 

    } 

    public void calculate(Scanner calc){ 
     System.out.print("Please ,enter your first number: "); 
     firstNum = calc.nextDouble(); 
     System.out.print("Enter your second number: "); 
     secondNum = calc.nextDouble(); 

     answer = firstNum + secondNum; 
     System.out.println("Your answer is: " + String.valueOf(answer)); 
    } 
} 
+0

Хорошо, это все имеет смысл. Я попробую, когда вернусь домой. Спасибо за помощь. – Nooberistic

+0

@Nooberistic без проблем, надеюсь, что это поможет – haifzhan

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

  • Нет связанных вопросов^_^