我在学校做作业虽然我已经通过整本书面材料检查过,但在我的生活中我无法找到如何做到这一点。我们应该输入像" 0123 B"并且字符串末尾的B表示代表青铜,然后将++添加到青铜整数。然后打印奖牌数量。
我的问题是我试图从字符串(B,S或G)中取出最后一个字符,然后添加到那个字符串,但问题是,它是字符串而不是字符串字符。所以我不能使用medal.charAt(5)。
以下是我的代码:
已编辑,代码正在解决
import java.util.Scanner;
public class CountMedals {
public static void main(String[] args) {
int bronze = 0;
int silver = 0;
int gold = 0;
int totalMedals = 0;
int incorrectMedals = 0;
char gol = 'G';
char sil = 'S';
char bro = 'B';
String medal = " ";
Scanner in = new Scanner(System.in);
System.out.println("Please enter the event number followed by the first letter of the medal type." +
" (I.E. \"0111" + " B\"). Type exit once completed");
while (!medal.equals("")) {
medal = in.nextLine();
if (medal.charAt(medal.length() - 1) == bro)
{
bronze++;
totalMedals++;
}
else if (medal.charAt(medal.length() - 1) == sil)
{
silver++;
totalMedals++;
}
else if (medal.charAt(medal.length() - 1) == gol)
{
gold++;
totalMedals++;
}
else if (medal.equals("exit"))
{
System.out.println("Gold medals: " + gold);
System.out.println("Silver medals: " + silver);
System.out.println("Bronze medals: " + bronze);
System.out.println("Total medals: " + totalMedals);
System.out.println(incorrectMedals + " incorrect medal(s) entered.");
}
else{
incorrectMedals++;
}
}
}
}
答案 0 :(得分:3)
只需将gol
,sil
和bro
改为char
s而不是String
s。
char gol = 'G';
char sil = 'S';
char bro = 'B';
在更改之后,您应该可以使用
medal.charAt(5) == gol
没问题。
修改强>
为了使其更通用,您可以使用
medal.charAt(medal.length() - 1) == gol
将始终拉出最后一个字符,从而避免输入少于5个索引的错误。