2013-09-07 4 views
0

В школе мне пришлось сделать программу калькулятора. В программе мы спрашиваем пользователя, хотят ли они добавлять, вычитать, умножать или делить. В конце мы спрашиваем у пользователя, что они хотят продолжить программу или нет. Я еще не добавил часть цикла, но моя проблема заключается в том, что после отображения «Хочешь продолжить» программа просто выходит.Текст не печатается

package calculator; 

import java.util.Scanner; 

public class calculator { 

    public static void main(String[] args) { 

     { 

     int o1; //first operand 
     int o2; //second operand 

     Scanner input = new Scanner (System.in); 
     System.out.println("Enter a choice:"); 
     System.out.println("+ to add"); 
     System.out.println("- to subtract"); 
     System.out.println("* to multiply"); 
     System.out.println("/ to divide"); 
     System.out.println("X to exit"); 
     String userChoice = input.nextLine(); 

     if (userChoice.equals("X to exit")) { 
      System.exit(0); 
     } 

     System.out.println("Enter the first operand:"); 
     o1 = input.nextInt(); 
     System.out.println("Enter the second operand:"); 
     o2 = input.nextInt(); 

     if (userChoice.equals("+ to add")) { 
      System.out.println((o1) + (o2)); } 
      else if (userChoice.equals("- to subtract")) { 
       System.out.println((o1) - (o2)); } 
      else if (userChoice.equals("* to multiply")) { 
       System.out.println((o1) * (o2)); } 
      else if (userChoice.equals("/ to divide")) { 
       System.out.println((o1)/(o2)); } 

     System.out.println("Would you like to continue?"); 
     System.out.println("Yes"); 
     System.out.println("No"); 
     String userPick = input.nextLine(); { 

     if (userPick.equals("Yes")) { 
      System.out.println("Ok."); } 
      else if (userPick.equals("No")) { 
       System.exit(0); } 

     } 
     } 
     } 

     // TODO Auto-generated method stub 


} 
+1

Вам нужно какое-то время (правда) за пределами всего, чтобы все повторялось. –

+0

У меня была проблема с _lot_, работая с 'Scanner' и 'nextLine' после' nextInt'. См. этот вопрос. http://stackoverflow.com/questions/7056749/scanner-issue-when-using-nextline-after-nextxxx – Pietu1998

ответ

0

Попробуйте это:

Scanner input = new Scanner (System.in); 
while(true){ 
    System.out.println("Enter a choice:"); 
    System.out.println("+ to add"); 
    ...... 
    if (userPick.equals("Yes")) { 
     System.out.println("Ok."); } 
     else if (userPick.equals("No")) { 
      System.exit(0); } 

    } 
} 

Он будет продолжать петлю вокруг логики, пока условие завершения не выполнено. Вы также можете закрыть сканер перед System.exit(); и до любого прекращения на самом деле.

+0

Как добавить «ignroecase» в этом выражении? if (userChoice.equals ("+ to add")) { –

+0

Вы уже отметили другого ответного помощника. Вам не нужна петля, чтобы она работала? Я имею в виду, как он действительно спрашивает снова? –

+0

Ну, если вы наберете «Да», то он начнет его с самого начала. Я сделал то, что вы сказали, положил (правда) {. И я ответила на вопрос о фэн-куземе, так как вы ответили на мои вопросы. –

0

Вы можете добавить строку перед кодом

String userPick = input.nextLine();, какая линия input.nextLine();

он может хорошо работать, которые могут получать Ввести перерыв line.you можно попробовать.

ps: мой английский плохой, я не уверен, что я четко сказал.

0
System.out.println("Would you like to continue?"); 
System.out.println("Yes"); 
System.out.println("No"); 
// add this lline, it can make a difference 
input.nextLine(); 
String userPick = input.nextLine(); 
+0

Спасибо! Это хорошо работает. Кроме того, с чем-то вроде if (userChoice.equals («+ to add»)) { Как поместить в «ignorecase»? –

+0

if (userChoice.equalsIgnoreCase ("+ to add")) –

+0

Можете ли вы рассказать о том, как это работает, чтобы решить вопрос реквестера? –

0

Вам нужен while(true) {} петлю на место в программе, где вы хотите его перезапустить. Таким образом, вы можете вернуться к началу, если пользователь говорит «да», но программа выйдет, если пользователь скажет «нет».

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