Java级别计算器if语句返回错误的值(新手)
我正在学习一些Java,并决定做一些简单的事情,但它仍然会返回错误的值…我不知道为什么我确定有一些我未经训练的眼睛没有接受的东西
如果你有我的代码ANSWER替代我的问题,然后推荐替代方案,我真的很讨厌那些忘记我们所有人开始的无知傲慢的人…
import java.util.Scanner; import java.lang.*; public class HelloWorld{ public static void main(String args[]){ int userlevel = 0; int userxp=12; int level1xp=0, level2xp=1, level3xp=10, level4xp=15, level5xp=25; int level1=1, level2=2, level3=3, level4=4, level5=5; if (userxp =level1xp || userxp = level3xp || userxp =level3xp || userxp <level5xp){ userlevel=level4; }else if (userxp == level5xp){ userlevel=level5; }else{ System.out.println("You are a cheat"); } }
控制台返回
2
if (userxp >=level1xp || userxp
这应该是&&
not ||
。
而我的最小建议是完全放弃第一个条件。
由于您在else分支中,因此您已经检查过XP不低于之前的级别要求。
if (userxp
我想你只需要改变你的|| (或)到&&(和)。 否则,如果你的xp是12大于level1xp(0),你的程序会立即将你的级别设置为2级,因为这个if语句:
else if (userxp >= level1xp || userxp < level3xp)
xp级别为12将通过这些要求,因为12大于0.更改|| 或者&&&会解决这个问题。 如果您之后有任何其他问题,请告诉我。
您应该使用&&
(AND)而不是||
(或)在你的条件。
尝试else if (userxp >=level1xp && userxp
在您的代码中,执行在第一个else语句之后停止,这是真的。
if (userxp <=level1xp){ userlevel=1; }else if (userxp
编辑:正如owther答案所指出的那样,你不需要水平下限的第一个条件,因为它已经被前一个else语句所满足。
你的条件是错误的使用&&
而不是||
。 因为在条件的第一部分为真的条件下,条件成立。
import java.util.Scanner; import java.lang.*; public class HelloWorld{ public static void main(String args[]){ int userlevel = 0; int userxp=12; int level1xp=0, level2xp=1, level3xp=10, level4xp=15, level5xp=25; int level1=1, level2=2, level3=3, level4=4, level5=5; if (userxp <=level1xp){ userlevel=1; }else if (userxp >=level1xp && userxp = level3xp && userxp =level3xp && userxp
输出为2是因为它检查第一个if语句,结果是假的。 然后它移动到if else,它是真的,因为userxp实际上是>=level1xp
所以userlevel设置为2并打印。 所以,只要我能理解代码的目标,用&&(AND)
替换||(OR)
&&(AND)
如果我是你,如果你的数量有限,我会选择enums,我会做那样的事情
public class HelloWorld { private static enum Level { LEVEL_1(0), LEVEL_2(1), LEVEL_3(10), LEVEL_4(15), LEVEL_5(25); int expRequired; Level(int expRequired) { this.expRequired = expRequired; } static Level getLevel(int exp) { Level level = LEVEL_1; for (Level l : Level.values()) { if (l.expRequired > exp) { break; } level = l; } return level; } } static class User{ Level level = Level.LEVEL_1; int exp = 12; } public static void main(String args[]) { User user = new User(); int level1xp = 0, level2xp = 1, level3xp = 10, level4xp = 15, level5xp = 25; int level1 = 1, level2 = 2, level3 = 3, level4 = 4, level5 = 5; user.level = Level.getLevel(user.exp); System.out.println(user.level ); } }