如果char等于一个字母,则执行代码

时间:2017-12-07 16:53:11

标签: java if-statement methods char

请帮助我无法运行此代码块:

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);
        }
    }
}

4 个答案:

答案 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。我认为这就是问题,答案应该标记正确。