首页 > 解决方案 > 货币转换器 - 为什么我的 for 循环在 switch 中不起作用?当我运行我的代码时,只有第一个 for 循环有效

问题描述

`我必须做一个代码,用户将输入美元金额和货币(美元将在哪里转换)例如 15 YEN,其中 15 是美元金额,YEN 是要转换的地方。我的代码只在第一个运行循环,它将扫描一个字符串并将其拆分,但在第二个 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");
       }

标签: java

解决方案


您可以省略第二个循环并在第一个循环中包含 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 个输入),那么您需要将它们存储在s 中ArrayListString然后将它们传递给循环。

        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");
            }

推荐阅读