请帮助我无法运行此代码块:
import java.util.Scanner;
public class Methods_in_java {
public static void main(String[] args) {
boolean gameover = true;
int score = 5000;
int Levelcomplete = 5;
int bonus = 100;
boolean prize = true;
System.out.println("Please enter your name");
Scanner lic = new Scanner(System.in);
String ab = lic.nextLine();
char fir = Character.toUpperCase(ab.charAt(1));
if(fir == 'A'){
prize = true;
}
Calculatescore(gameover,score,Levelcomplete,bonus,prize);
}
public static void Calculatescore(boolean gameover,int score,int levelcomplete,int bonus,boolean prize){
if(gameover){
int finalscore = score + (levelcomplete * bonus);
if (prize){
finalscore += 1000;
}
System.out.println("Your final score is "+ finalscore);
}
}
}
答案 0 :(得分:2)
charAt基于零。 如果只使用一个char,则应使用ab.charAt(0)。
另一个好建议是使用小写字母启动方法名称并使用camelCase格式。
答案 1 :(得分:1)
String ab = lic.nextLine();
char fir = Character.toUpperCase(ab.charAt(1));
fir
应该是用户字符串中的第一个字符吗?在这种情况下,您需要确保将基于零的索引考虑在内:
char fir = Character.toUpperCase(ab.charAt(0));
答案 2 :(得分:0)
您已将奖励变量初始化为 true ,它始终 true ,即使是满足条件,或者只是将其更改为假强>
当你使用charAt(1)
访问String的第二个字符时,索引从0开始,如果你尝试使用charAt(0)
,那么你将访问第一个字符。
只需将您的代码更改为:
public class cn {
public static void main(String[] args) {
boolean gameover = true;
int score = 5000;
int Levelcomplete = 5;
int bonus = 100;
boolean prize=false;
System.out.println("Please enter your name");
Scanner lic = new Scanner(System.in);
String ab = lic.nextLine();
char fir = Character.toUpperCase(ab.charAt(0));
if(fir == 'A'){
prize = true;
}
Calculatescore(gameover,score,Levelcomplete,bonus,prize);
}
public static void Calculatescore(boolean gameover,int score,int levelcomplete,int bonus,boolean prize){
if(gameover){
int finalscore = score + (levelcomplete * bonus);
if (prize){
finalscore += 1000;
}
System.out.println("Your final score is "+ finalscore);
}
}
}
答案 3 :(得分:0)
如果你详细说明你的问题是什么会很有帮助, 你有运行时错误,编译时错误,或者输出不是你所期望的 你的问题可能是数组从0开始,所以第一个字母是charAt(0)。
实际上我相信另一位用户提到奖品变量已初始化为true。我认为这就是问题,答案应该标记正确。