2014-09-26 54 views
-2

这是我为类创建的一个小游戏 - 除了如果猜数字==不显示消息框,程序将跳过它并转到下一条有关总猜测的消息,等等......我的逻辑有些问题,但我很困难。我觉得我已经尝试了一百万的东西..任何帮助,请将如此赞赏。如果分支在循环中跳过

import java.util.Random; 
import javax.swing.JOptionPane; 

public class GuessingGameTestMyIdeas { 

    public static void main(String[] args) { 
     Random rand = new Random(); 
     int number = rand.nextInt(32)+1; 

     int guessCount = 0; // total count variable 
     int lessCount = 0; // number of less than guesses 
     int moreCount = 0; // number of greater than guesses 

     String guessString = JOptionPane.showInputDialog("Guess the number I'm thinking of, between 1 and 32: "); 
     int guess = Integer.parseInt(guessString) ; 

     while (guess != number){ //run this loop while guess is not equal to the random number generated. 
      if (guess == number){ 
       JOptionPane.showMessageDialog(null, "You guessed correctly"); 
      } else if (guess < number){ 
       lessCount = lessCount + 1; 
       String lowString = JOptionPane.showInputDialog("Your guess is too low. Next Guess:"); 
       guess = Integer.parseInt(lowString); 
      } else { 
       moreCount = moreCount +1; 
       String highString = JOptionPane.showInputDialog("Your guess is too high. Next Guess:"); 
       guess = Integer.parseInt(highString); 

      } 
      guessCount += 1; // after each guess, the guessCount goes up by one 
     }  

     String output = "Your total number of guesses is " + guessCount + " with " + lessCount + " smaller guesses " + moreCount + " larger guesses."; 
     JOptionPane.showMessageDialog(null, output); 
+0

您是否尝试过使用调试器执行代码?如果你这样做,你会发现如果'guess == number',循环将退出并且'if'语句根本不会被执行。 – skyking 2015-08-21 07:36:06

回答

0

你要招行

JOptionPane.showMessageDialog(null, "You guessed correctly"); 

while循环后面。

或者在if循环结束时移动if,但第一个选项对我来说似乎更清晰。

你while循环的条件是guess != number并直接在它之后你要求guess == number。因此这永远不会是真的。当玩家猜对了,循环被留下,并且if语句不再被评估。

顺便说一句:调试你的程序会告诉你。

+0

非常感谢。我想到了这一点,并试图把它放在while循环之上,这没有奏效,所以我抛出了这个想法,在阅读你的回复后,我把它放在while循环之下,它的工作原理!谢谢你,并感谢你的调试技巧,但我没有尝试调试器,它没有告诉我。但我只有3周的时间学习java,所以我可以把它搞砸了......非常感谢 – Megan 2014-09-26 07:22:55

+0

太棒了!现在,您可以打开对您有帮助的答案,并接受其中一个答案/最有帮助的答案。然后这个问题就结束了,并且表明你已经得到了帮助。 – usr1234567 2014-09-26 13:49:54

0

保留在循环外部的行之外。

if (guess == number){ 
     JOptionPane.showMessageDialog(null, "You guessed correctly"); 
} 

我希望它有帮助!

+0

谢谢Sanket!精美的帮助! – Megan 2014-09-26 07:23:44