如果条件满足,声明并不总是消失吗?

时间:2017-09-02 02:13:46

标签: java

我目前正在开发一款简单的Java游戏,但我遇到了一个问题。我什么时候运行代码它会为敌人吐出一个随机数,但它不会一直触发if then语句。任何人都可以帮我解决这个问题吗?

public static void main(String[] args) {
        // TODO code application logic here\
    Random rnd = new Random();

    int playerlevel = 1;
    int playermaxdamage = 9;
    int playermindamage = 1;
    int playerhealthrng = rnd.nextInt(11 - 7) + 7;
    int playerhealth = playerlevel * playerhealthrng;   
    int playerdamage = rnd.nextInt(playermaxdamage - playermindamage) + 1;
    int enemytyperngmax = 10;
    int enemytyperngmin = 1;
    int enemytyperngreal = 0;
    int enemyratdamagemaxrng = 3;
    int enemyratdamageminrng = 1;
    int enemyrathealthmaxrng = 5;
    int enemyrathealthminrng = 1;
    int enemyratnumberrangehigh = 5;
    int enemyratnumberrangelow = 1;
    int noenemynumberrangehigh = 6;
    int noenemynumberrangelow = 9;
    int enemydragonnumberrangehigh = 10;
    int enemydragonnumberrangelow = 10;
    int enemyrathealthreal = rnd.nextInt (enemyrathealthmaxrng - enemyrathealthminrng) + 1;
    int enemytyperng = rnd.nextInt(enemytyperngmax - enemytyperngmin) + 1;

    String asktowalk = "Do you want to move forward?"; 
    String playerinfolevel = ("Player's Current level is " + playerlevel);
    String playerinfohealth = ("Player's Current Health is " + playerhealth);
    String playerdamagedealt = ("Player did " + playerdamage + " to enemy");
    String enemyratinfo = ("A Rat has appered with " + (enemyrathealthreal) + " Hp");
    String enemynoninfo = ("You are Safe . . . for now");
    String enemydragoninfo = ("You have uncovered a Danges beast he swings for 2,147,483,647 Damange");         

    enemyratdamagemaxrng = rnd.nextInt(enemyratdamagemaxrng - enemyratdamageminrng) + 1;

    System.out.println(enemyratdamagemaxrng);

    if (enemytyperng > enemyratnumberrangelow && enemytyperng < enemyratnumberrangehigh)
        System.out.println(enemyratinfo);

    if (enemytyperng > noenemynumberrangelow && enemytyperng < noenemynumberrangehigh)
        System.out.println(enemynoninfo);

    if (enemytyperng == enemydragonnumberrangehigh)
        System.out.println(enemydragoninfo);

    }
}

1 个答案:

答案 0 :(得分:0)

你有:

if (enemytyperng > noenemynumberrangelow && enemytyperng < noenemynumberrangehigh)
        System.out.println(enemynoninfo);

如果enemytyperng大于9并且敌人小于6;显示enemynoninfo。

但是,一个值不可能大于9且小于6.(也许你的意思是使用OR ||运算符?)或者,也许你在将这些值分配给变量时会混淆这些值。

此外,您正在随机生成0到8之间的数字,然后再添加1.因此它永远不会大于9.请记住,随机数生成器是独占的,这意味着rnd.nextInt(9)只会生成值0和8。

这同样适用于您的上一个if语句。它永远不会等于10,因为它可以等于的最大值是9。

所以如果你想生成1到10之间的随机数;尝试

rand.nextInt(10) + 1;

但你拥有的基本上是

rand.nextInt(9) + 1;

附注:您编写的代码存在很多问题。我强烈建议你选择一本实际的大学水平教科书,并从头到尾继续学习。