我当前正在使用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 ****”,其中*是任意字符串组合,程序应将其识别为要增加强度或耐力点。
答案 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表示它),因为那将意味着该类中的所有方法都是静态的,因为这又可能导致您需要类的一个对象来调用它们。无论哪种方式,这都是不好的,您应该集中精力摆脱这些错误,因为随着项目的不断扩大,它们确实会使您和其他人无法读取代码。