【发布时间】:2015-04-24 20:32:21
【问题描述】:
我正在循环处理 Switch 语句。我想添加名称并为这些名称分配字母,然后根据字母打印出总值。问题是它不会读取字母的分配值,正如您在下面的代码中看到的那样。例如,对于 Mike,我分配了 A,A 的值为 10。对于 Joe,我分配了 B,B 的值为 7。所以我需要 A+B 的总值乘以固定值 3,即是 51。我肯定做错了什么,我想知道是否可以不使用对象和其他方法来做到这一点。
import java.util.Scanner;
public class TotalScore {
public static void main(String[] args) {
double lettervalue = 0,fixedvalue=3,totalvalue;
int count,repeatcount;
String valuename = "";
String letter="";
Scanner input = new Scanner(System.in);
System.out.print("How many values do you want to process? ");
count=input.nextInt();
input.nextLine();
for(repeatcount=0;repeatcount<count;++repeatcount){
System.out.print("Enter name for value " +(repeatcount+1)+" ");
valuename = valuename+input.nextLine()+"\n";
System.out.print("Enter letter A,B,C or D for named value ");
letter = letter+input.nextLine()+"\n";
switch(letter){
case "A":case"a": lettervalue=10.0;
break;
case "B":case"b": lettervalue=7.0;
break;
case "C":case"c": lettervalue=5.0;
break;
case "D":case"d": lettervalue=2.0;
break;
default: lettervalue=0;
}
}
totalvalue=lettervalue*fixedvalue;
System.out.println("The value names are\n "+valuename);
System.out.println("The letter values you entered are\n "+letter);
System.out.println("The total value is "+totalvalue);
}
}
Output:
How many values do you want to process? 2
Enter name for value 1 Mike
Enter letter A,B,C or D for named value A
Enter name for value 2 Joe
Enter letter A,B,C or D for named value B
The value names are
Mike
Joe
The letter values you entered are
A
B
The total value is 0.0
【问题讨论】:
-
letter = letter+input.nextLine()+"\n"会导致您在 switch 语句中每次都使用默认大小写。为什么要附加换行符?然后在第二次迭代中,letter将是您的两个输入的连接,依此类推。 -
只是为了与问题分开,将这些值放在一起。
-
letter应该只包含您的输入值,然后您可以根据需要将其附加到字符串 -
我想做的就是拥有像 Mike A 10 和 Joe B 7 这样的东西
-
然后计算A和B并乘以3
标签: java loops switch-statement assign