java - 实现 do while 和 exit

标签 java converters

作为 Java 新手,我编写了这个程序来计算各种货币。我想询问用户是否希望重复该过程直到用户希望退出。请在这件事上协助我。到目前为止我的代码:

public static void main(String[] args) {


    Scanner input = new Scanner(System.in); 
    DecimalFormat formatter = new DecimalFormat("#0.00");

    String CType, c1 = "US", c2 = "EUR", c3 = "RM", c4 = "SAR"; 
    double CValue , US, EUR, RM, SGD, SAR;


    System.out.println("Welcome to Bonus Calculator");

    System.out.println("Enter any of the following Currencies:"); 
    System.out.print("US\n" +
                     "EUR\n" +
                     "RM\n" +
                     "SGD\n" +
                     "SAR: ");
    CType = input.next();



   if(CType.equalsIgnoreCase("US")){
     System.out.print("Enter Value: ");
     CValue = input.nextInt();

       EUR = CValue * .88;
       RM = CValue * 3.92;
       SGD = CValue * 1.35;
       SAR = CValue * 3.75;

   System.out.print("US = " + formatter.format(CValue) + "EUR =" + formatter.format(EUR) + "RM =" + formatter.format(RM) + "SGD =" + formatter.format(SGD) + "SAR =" + formatter.format(SAR));

   }

   else if(CType.equalsIgnoreCase("EU")){ 
       System.out.print("Enter Value: ");
       CValue = input.nextInt();
       US = CValue * 1.14;
       RM = US * 3.92;
       SGD = US * 1.35;
       SAR = US * 3.75;

   System.out.print("EUR = " + formatter.format(CValue) + " US = " + formatter.format(US) + " RM = " + formatter.format(RM) +" SGD = " + formatter.format(SGD) +" SAR = " + formatter.format(SAR));

   }

   else if (CType.equalsIgnoreCase("RM")){
       System.out.print("Enter Value: ");
       CValue = input.nextInt();
       US = CValue * .26;
       EUR = US * .88;
       SGD = US * 1.35;
       SAR = US * 3.75;

   System.out.print("RM = " + formatter.format(CValue) + " US = " + formatter.format(US) + " EUR = " + formatter.format(EUR) + " SGD = " + formatter.format(SGD) + " SAR = " + formatter.format(SAR));

   }

   else if (CType.equalsIgnoreCase("SGD")){
       System.out.print("Enter Value: ");
       CValue = input.nextInt();
       US = CValue * 0.74;
       EUR = US * .88;
       RM = US * 3.92;
       SAR = US * 3.75;

   System.out.print("SGD = " + formatter.format(CValue) + " US = " + formatter.format(US) + " EUR = " + formatter.format(EUR) + " SAR = " + formatter.format(SAR) + " RM = " + formatter.format(RM));

   }

   else if(CType.equalsIgnoreCase("SAR")){
       System.out.print("Enter Value: ");
       CValue = input.nextInt();
       US = CValue * 0.39;
       EUR = US * .88;
       RM = US * 3.92;
       SGD = US * 1.35;

   System.out.print("SAR = " + formatter.format(CValue) + " US = " + formatter.format(US) + " EUR = " + formatter.format(EUR) + " SGD = " + formatter.format(SGD) + " RM = " + formatter.format(RM));

   }

}

最佳答案

将所有代码封装在一个循环中,并使用一个 boolean 变量,例如初始化为 true 的 keepRunning。在循环结束时,您询问用户(从扫描仪获取输入),然后检查输入是否意味着"is"或“否”(或换句话说真和假)并相应地设置 keepRunning (这意味着如果用户选择“否”,则将其设置为 false)。

示例:

boolean keepRunning = true;
while( keepRunning ) {
  //ask for input, calculate, print - the bulk of your code above

  System.out.println("Would you like to do another? y/n");

  String userInput = ...; //get from scanner, I'll leave this as an excercise for you
  keepRunning = "y".equalsIgnoreCase( userInput ); //you might want to be more lenient here, e.g. also accept "yes" etc.
}

当用户选择“否”时,也可以使用 while(true)break;

示例:

while( true ) {  //keep running until we stop it from the inside
  //same as above

  ...

  //break the loop if the user didn't select "y"
  if( !"y".equalsIgnoreCase( userInput ) ) {
    break;
  }
}

关于java - 实现 do while 和 exit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36618439/

相关文章:

java - 无法在 Android 10 中创建目录

java - 将外部库放入 JAR?

html - 将 excel 电子表格转换为 HTML

java - Postgresql:无法使用 EclipseLink 插入路径字段

c# - 如何在 ASP.NET MVC 中即时将 HTML 转换为 Word 文档?

c# - 确定 LongListSelector 何时滚动

java - 方法 replace(String, ArrayList<>) 未定义 HashMap 类型

java - 带 PrintDialog 的 PDF 渲染器

java - 将 Java Date 转换为 Epoch 给出了错误的结果

java - Java 8 中具有默认方法的黑白抽象类和接口(interface)的差异示例