【问题标题】:if char equals a letter then execute a code如果 char 等于一个字母,则执行一段代码
【发布时间】:2024-04-27 09:40:02
【问题描述】:

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

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

【问题讨论】:

  • “我无法运行这段代码”为什么?
  • 哪一个? Calculatescore 还是整个主线?
  • 欢迎来到 Stack Overflow!请解释为什么你“不能运行”你的代码:你有编译错误吗?运行时错误?输出不是你预期的吗?以及相关信息、您想要达到的目标的描述,以及带有数据和期望结果的具体示例。
  • 添加您的错误声明(如果有)。
  • 我很抱歉英语不好我的意思是我不能得到想要的结果奖品总是等于真或假取决于我设置的第一个值

标签: java if-statement methods char


【解决方案1】:

charAt 从零开始。 如果你只使用一个字符,你应该使用 ab.charAt(0)。

另一个好的建议是方法名称以小写开头并使用驼峰格式。

【讨论】:

  • 非常感谢您的回答,但它始终等于 true,并且输出相同
  • 那是因为你初始化了奖品(应该是 'price' 为真)。将其初始化为 false ,它会做你想做的事:)
  • 非常感谢我是新来的,所以我不知道如何提问抱歉,但非常感谢
【解决方案2】:
String ab = lic.nextLine();
char fir = Character.toUpperCase(ab.charAt(1));

fir 应该是用户字符串中的第一个字符吗?在这种情况下,您要确保考虑从零开始的索引:

char fir = Character.toUpperCase(ab.charAt(0));

【讨论】:

  • 非常感谢您的回答,但它仍然总是等于 true 并且输出相同
【解决方案3】:

您已将您的 prize 变量初始化为 true,即使它满足条件,也将始终保持 true,或者仅将其更改为

当您使用 charAt(1) 访问字符串的第二个字符时,索引从 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);
        }
    }
}

【讨论】:

  • 欢迎@AdityaRajTiwari,如果您认为我的帖子对您​​有帮助,您可以接受我的回答或任何其他如果您发现其他更好的回答
【解决方案4】:

如果您能详细说明您的问题是什么,将会很有帮助, 您是否有运行时错误、编译时错误,或者输出不是您所期望的。
您的问题可能是数组从 0 开始,所以第一个字母是 charAt(0)。

实际上,我相信另一位用户提到 Prize 变量已初始化为 true。我认为这就是问题所在,该答案应该被标记为正确。

【讨论】:

  • 谢谢 Czarking 抱歉英语不好,并解释说真正的问题是没有得到想要的输出,只有当奖品为真时才应该加 1000,但它总是加 1000
  • 您的输入有哪些示例?将它们添加到您的问题中
最近更新 更多