[英]currency converter- why does my for loop in switch wont work? when i run my code only the first for loop works
`我必須編寫一個代碼,用戶將輸入美元金額和貨幣(將在其中轉換美元),例如15日元,其中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個輸入),則需要將它們存儲在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");
}
如果您的輸入是一行,則不需要兩個循環,則只需掃描一次
第二個循環可能不起作用,因為您重復i <= 3,同時似乎您輸入的內容多於4個項目。最好使用分割字符串的長度,並且只需要一個變量對其進行索引
String temp = sc.nextLine().split(" ");
double conversion;
for (int i = 0; i < temp.length - 1; i +=2) {
String amount = Double.parseDouble(temp[i]);
String currency = temp[i+1];
System.out.print("$"+amount+" CONVERTS TO ");
switch (currency) {
case "POUNDS":
conversion = amount * (14.28/17); // based on your comment, this isn't 51.23
break;
}
System.out.print(conversion + " " + currency);
System.out.println();
}
為了優化,最好使用Hashmap<String, Double>
作為轉換率,而不是使用開關
您的for循環只能執行一次,因為每個switch case語句的末尾都有一個break語句。 正如其他人提到的那樣,您應該嘗試在沒有for循環的情況下執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.