java - 货币转换器-为什么我的 for 循环在 switch 中不起作用?当我运行我的代码时,只有第一个 for 循环起作用

标签 java

`我必须编写一个代码,用户将输入美元金额和货币(美元将在其中转换),例如 15 日元,其中 15 是美元金额,日元是要转换的位置。我的代码仅在第一个 for 循环将扫描字符串并将其分割,但在第二个 for 循环中进行转换将不起作用。

       for(i=0;i<=3;i++){
       temp = sc.nextLine();
       Temp = temp.split(" ");
    }

       for(i=0,j=1;i<=3;i+=2,j+=2){
           switch (Temp[j]) {
               case "PHP":
                   conversion = Double.parseDouble(Temp[i])*51.23;
                   System.out.println("$"+Temp[0]+" CONVERTS TO "+df.format(conversion)+" PHP.");
                   break;
               case "POUNDS":
                   conversion = Double.parseDouble(Temp[i])*0.84;
                   System.out.println("$"+Temp[2]+" CONVERTS TO "+df.format(conversion)+" POUNDS.");
                   break;
               case "LIRA":
                   conversion = Double.parseDouble(Temp[i])*2040;
                   System.out.println("$"+Temp[4]+" CONVERTS TO "+df.format(conversion)+" LIRA.");
                   break;
               case "FRANCS":
                   conversion = Double.parseDouble(Temp[i])*9.85;
                   System.out.println("$"+Temp[6]+" CONVERTS TO "+df.format(conversion)+" FRANCS.");
                   break;
               case "MARKS":
                   conversion = Double.parseDouble(Temp[i])*3.23;
                   System.out.println("$"+Temp[8]+" CONVERTS TO "+df.format(conversion)+" MARKS.");
                   break;
               case "YEN":
                   conversion = Double.parseDouble(Temp[i])*260;
                   System.out.println("$"+Temp[10]+" CONVERTS TO "+df.format(conversion)+" YEN.");
                   break;
               default:
                   ;
                   break;
           }
        System.out.println("Invalid input, Please try again");
       }

最佳答案

您可以省略第二个循环并将 switch 语句包含在第一个循环内:

  for(i=0;i<=3;i++)
  {
   temp = sc.nextLine();
   Temp = temp.split(" ");

       switch (Temp[1]) {
           case "PHP":
               conversion = Double.parseDouble(Temp[0])*51.23;
               System.out.println("$"+Temp[0]+" CONVERTS TO "+df.format(conversion)+" PHP.");
               break;
           // Other cases
           // ...
           // ...
           default:
               i--;
               System.out.println("Invalid input, Please try again");
       }
  }

如果您想在转换之前首先读取所有 4 输入(每行 1 个输入),那么您需要将它们存储在 String< 的 ArrayList然后将它们传递给循环。

        ArrayList<String> lines = new ArrayList<>();

        for(int i=0;i<=3;i++)
            lines.add(sc.nextLine());

        for(int i=0;i<=3;i++)
        {
            String Temp[] = lines.get(i).split(" ");

            switch (Temp[1]) {
                case "PHP":
                    conversion = Double.parseDouble(Temp[0])*51.23;
                    System.out.println(Temp[1]);
                    System.out.println("$"+Temp[0]+" CONVERTS TO "+df.format(conversion)+" PHP.");
                    break;
                // Other cases
                // ...
                // ...
                default:
                    continue;
                    //i--;
                    //System.out.println("Invalid input, Please try again");
            }

关于java - 货币转换器-为什么我的 for 循环在 switch 中不起作用?当我运行我的代码时,只有第一个 for 循环起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57948668/

相关文章:

java - 为什么当从 SVN checkout Ant version 1.3 时,Ant java 项目本身有很多错误?

java - 如何改变图形的大小

java - spring 表单标签的 ESAPI 实现

java - 使用java中的azure函数将文件从浏览器上传到azure blob存储

java - volatile 变量 'reads' 与正常读取一样快吗?

java - 在 Linux 操作系统上使用正确的 JDK 或更改 Netbeans 中的默认值

java - 我应该使用哪个 .JAR 来嵌入 Jetty?

java - 将 byte[] 从 Java 传递到 C++

java - 如何安装 self 更新的 32 位和 64 位 Java?

java - 最大的行和列 Java 正则表达式