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 在所有其他if语句中使用。

在您的代码中,执行在第一个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 ); } }