2015-10-18 47 views
0

我试图做一个控制台游戏(如俄勒冈步道),我有一个问题with the loop但后来解决了。Java循环在第二次尝试后停止工作

**这只是整个游戏代码的一部分。

现在的问题是,第二次尝试后循环不起作用;这里是代码:

int o1, o2, o3, o4, o5, o6, o7, o8, o9; 
boolean thugloop = false; 
System.out.println("Woah, you beat the thug; but now the thug is angry and he won't rest until he beats you."); 
       Thread.sleep(1000); 
       thugloop = true; 
        System.out.println("Pick your numbers again"); 
       while(thugloop = true){ 

        o4=reader.nextInt(); 
       o5=reader.nextInt(); 
       o6=reader.nextInt(); 
       o7=reader.nextInt(); 
       o8=reader.nextInt(); 
       int sumhop2 = o4+o5+o6+o7+o8; 
        int angrythug= 3 + (int)(Math.random()*85); 

        if(sumhop2>angrythug){ 
         Thread.sleep(1000); 
         System.out.println("Woah, you are really good at this!"); 
         System.out.println("But the thug is getting angrier. Put in 5 more numbers:"); 
         o4=reader.nextInt(); 
       o5=reader.nextInt(); 
       o6=reader.nextInt(); 
       o7=reader.nextInt(); 
       o8=reader.nextInt(); 

     **sumhop2 = o5 + o5 + o7 + o8; 
    angrythug= 3 + (int)(Math.random()*85);** 


        }else if(sumhop2<angrythug){ 

         //other code goes here. 
      break; 

        } 

       } 

所以它的工作原理是第一次,但是当它说:“暴徒越来越愤怒将在5个...”我把在5个号码,什么也没有发生,它只是那里闪烁的光标。

我该如何解决这个错误?

谢谢!

+1

请正确地格式化您的代码将退出。我试图弄清楚块在哪里结束,我很头痛。 – Keppil

+2

'while(thugloop = true)'应该是'while(thugloop)'(或者,不太推荐,'while(thugloop == true)') – Maroun

+0

@Keppil,我是一个noob,我不能正确格式化;抱歉。 – Aakarsh

回答

0

一旦输入5个数字,就会到达循环的开始位置,这需要再输入5个数字。因此闪烁的光标。

  o4=reader.nextInt(); 
      o5=reader.nextInt(); 
      o6=reader.nextInt(); 
      o7=reader.nextInt(); 
      o8=reader.nextInt(); 
      int sumhop2 = o4+o5+o6+o7+o8; 
      int angrythug= 3 + (int)(Math.random()*85); 
      while(thugloop == true) { 
       if(sumhop2>angrythug){ 
        Thread.sleep(1000); 
        System.out.println("Woah, you are really good at this!"); 
        System.out.println("But the thug is getting angrier. Put in 5 more numbers:"); 
        o4=reader.nextInt(); 
        o5=reader.nextInt(); 
        o6=reader.nextInt(); 
        o7=reader.nextInt(); 
        o8=reader.nextInt(); 

        sumhop2 = o5 + o5 + o7 + o8; 
        angrythug= 3 + (int)(Math.random()*85); 
        ... 
+0

谢谢 - 为什么它在外面工作? – Aakarsh

+0

@Aakarsh因为在循环之外,你得到了第一次迭代的输入。然后,如果需要进行另一次迭代,则会获得更多输入(在if语句中)。你也可以将它保存在while循环中,而不是从if语句中删除'nextInt'行。重要的一点是,在while循环的每次迭代中,只能从用户读取5个整数。 – Eran

+0

非常感谢,你的回答很棒。我正在制作这款游戏​​,我快要完成了,但我遇到了另一个问题。我刚刚发布了它。这是一个奇怪的问题 – Aakarsh

0

the thug is getting angrier. Put in 5 more..之后你接受5个值做在angrythug计算那么如果块退出你回while循环:

也许循环开始前的第一5个输入应该被请求。因此,在if block中的5个摄入值后打印结果。

编辑:或做:

while(sumhop2 > angrythug){ 
Thread.sleep(1000); 
System.out.println("Woah, you are really good at this!"); 
System.out.println("But the thug is getting angrier. Put in 5 more numbers:"); 
      o4=reader.nextInt(); 
      o5=reader.nextInt(); 
      o6=reader.nextInt(); 
      o7=reader.nextInt(); 
      o8=reader.nextInt(); 

    **sumhop2 = o5 + o5 + o7 + o8; 
angrythug= 3 + (int)(Math.random()*85);** 
} 
// for sumhop2 < angrythug code goes here 

//上面的循环当angrythug大于sumhop2

相关问题