java - 货币转换器 - 为什么我的 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");
}
解决方案
您可以省略第二个循环并在第一个循环中包含 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 中ArrayList
,String
然后将它们传递给循环。
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");
}
推荐阅读
- c - 错误:函数“rl_replace_line”的隐式声明在 C99 中无效 [-Werror,-Wimplicit-function-declaration]
- node.js - 如何设置 webhook 以进行传输
- db2 - 从 DB2 到等效雪花的函数转换
- javascript - JavaScript 中的触发器
- c# - c# 中的按钮 onclick 不会转到事件 button_click
- c++ - 尽管库(glew32.a)似乎很好,但在尝试构建 OpenGL 项目时出现错误(跳过不兼容)
- python - Jupyter 内核在尝试另存为 .VTP 文件时死机
- php - 如何在 PHP 中获取以换行符 (\n) 结尾的字符串的最后一个字符?
- javascript - 是否可以不发送两个人的消息?
- security - 在 Karaf 中使用签名的外部 JAR