允许用户输入具有相同名称的变量

时间:2019-02-01 20:48:49

标签: java

我当前正在使用charAt(0)方法来允许用户进行输入。这是一个问题,因为我有一个以相同字符开头的变量。我想程序在这种情况下读取第3个字符。换句话说,如何确保我的程序在被选择时能够识别正确的变量?

P-S-我知道我需要从事命名约定,我还是Java的新手,正在学习。

switch(SkillChoice.nextLine().toLowerCase().charAt(0)){
        case 'd':
            System.out.println("How many points towards Dexterity?");
            System.out.println("Your current Dexterity is " + Attribute.Dexterity);

            SkillChoice.nextDouble();

            Attribute.setDex(SkillChoice.nextDouble() + Attribute.getDex());
            System.out.println(Attribute.Dexterity);
        case 's':
            System.out.println("How many points towards Strength?");
            System.out.println("Your current Strength is " + Attribute.Strength);

        SkillChoice.nextDouble();

            Attribute.setStr(SkillChoice.nextDouble() + Attribute.getStr());
            System.out.println(Attribute.Strength);
        case 's':
            System.out.println("How many points towards Strength?");
            System.out.println("Your current Strength is " + Attribute.Stamina);

             SkillChoice.nextDouble();

            Attribute.setSta(SkillChoice.nextDouble() + Attribute.getSta());
            System.out.println(Attribute.Dexterity);
        case 'i':
            System.out.println("How many points towards Intelligence?");
            System.out.println("Your current Intelligence is " + Attribute.Intelligence);

            SkillChoice.nextDouble();

            Attribute.setInt(SkillChoice.nextDouble() + Attribute.getInt());
            System.out.println(Attribute.Intelligence);

出现提示时,用户应能够键入“ Str ****”或“ Sta ****”,其中*是任意字符串组合,程序应将其识别为要增加强度或耐力点。

1 个答案:

答案 0 :(得分:0)

我认为您应该删除整个 switch / case 代码,并坚持 if 条款。这是因为对于我在下面解释的内容,它在 switch / case 中不起作用,如果您真的想坚持使用它,则至少应查找正确的语法,因为您缺少任何中断

这样,您可以简单地使用 String 类的 startsWith 方法(参考:https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#startsWith-java.lang.String-

在您的情况下,用法应如下所示:

if(SkillChoice.nextLine().toLowerCase().startsWith("str") {
    System.out.println("How many points towards Strength?");
    System.out.println("Your current Strength is " + Attribute.Strength);

    SkillChoice.nextDouble();

    Attribute.setStr(SkillChoice.nextDouble() + Attribute.getStr());
    System.out.println(Attribute.Strength);
}
else if(SkillChoice.nextLine().toLowerCase().startsWith("sta") {
// Your stamina stuff here
}

德国好运与问候

PS:我希望(尤其是) Attribute 并不是一个真正的类名(大写字母A表示它),因为那将意味着该类中的所有方法都是静态的,因为这又可能导致您需要类的一个对象来调用它们。无论哪种方式,这都是不好的,您应该集中精力摆脱这些错误,因为随着项目的不断扩大,它们确实会使您和其他人无法读取代码。