Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:在for循环中递增一个变量_Java_Loops_Nested_Increment_Operator Keyword - Fatal编程技术网

Java:在for循环中递增一个变量

Java:在for循环中递增一个变量,java,loops,nested,increment,operator-keyword,Java,Loops,Nested,Increment,Operator Keyword,我是一个Java初学者,对于一个项目,我需要计算一个条件在循环中返回TRUE(correctGuess)或FALSE(incorrectGuess)的次数。我遇到的问题是,在内部循环中递增的变量不会在循环重复时保持递增的值。因此,外部while循环的条件永远不会为false。我对编程真的很陌生,我想不出解决方案。提前感谢您花时间回答这个愚蠢的问题,如果有任何问题,我很乐意做更好的解释。代码如下所示: int incorrectGuess = 0; int correctGuess

我是一个Java初学者,对于一个项目,我需要计算一个条件在循环中返回TRUE(correctGuess)或FALSE(incorrectGuess)的次数。我遇到的问题是,在内部循环中递增的变量不会在循环重复时保持递增的值。因此,外部while循环的条件永远不会为false。我对编程真的很陌生,我想不出解决方案。提前感谢您花时间回答这个愚蠢的问题,如果有任何问题,我很乐意做更好的解释。代码如下所示:

    int incorrectGuess = 0;
    int correctGuess = 0;   

    while(incorrectGuess < 6 && correctGuess < WORD_LENGTH) {

        //Gets the users first guess
        System.out.print("Please guess a letter [A-Z]: ");
        letterGuessed = keyboard.nextLine();

        for (int i = 0; i < WORD_LENGTH; i++){
            char value = wordLetterArray[i];
            String letterArray_value = String.valueOf(value);

            if(letterGuessed.equals(letterArray_value)){
                ++correctGuess;
            }

            else
                System.out.println("Bad comparison!");  

            if(i == WORD_LENGTH)
                ++incorrectGuess;   

        }   
    }
int incorrectGuess=0;
int=0;
while(不正确猜测<6&&correctGuess
看起来您可能需要重新设计整个算法,但我可以告诉您,这种循环的主要问题是什么:

// Seems legit
while(incorrectGuess < 6 && correctGuess < WORD_LENGTH) {

// Still seems legit
for (int i = 0; i < WORD_LENGTH; i++)

    // Well, there's a problem, i will never be equal to word length 
    //because a condition of the for loop is i < WORD_LENGTH
    if(i == WORD_LENGTH)
        ++incorrectGuess;   
//似乎合法
while(不正确猜测<6&&correctGuess
同样,我觉得您需要重新设计整个算法,但如果您想继续,只需将incorrectGuess增量行从for循环中拉出即可。这将为您提供预期的结果:

    for (int i = 0; i < WORD_LENGTH; i++){
      char value = wordLetterArray[i];
      String letterArray_value = String.valueOf(value);

      if(letterGuessed.equals(letterArray_value)){
            ++correctGuess;
      }
      else {
            System.out.println("Bad comparison!");  
      }
    }   

   incorrectGuess++;   
for(int i=0;i
否,这些值将保持不变。什么告诉您它们不保持不变?这是:如果(i==单词长度)在具有此退出条件的for循环中:iincorrectGuess应该跟踪什么?请注意,由于
incorrectGuess
在具有条件
i
的for循环中递增,并且在具有条件
i==WORD\u LENGTH
的if语句中递增,因此它实际上永远不会递增,因为这是不可能的这两个条件同时为真。也许你的意思是if语句的
i==WORD\u LENGTH-1
?对不起,该程序是用于一个绞刑游戏。“错误猜测”是指用户猜测一个不属于单词的字母。因为这是一个绞刑游戏,你只会得到6个错误的猜测(要得到一个被绞死的人,你先画他的头(1)、身体(2)、手臂(3和4)和腿(5和6))。正确猜测然后跟踪正确猜测的数量,以便当用户正确猜测所有字母时,程序将终止,而不是继续要求进行另一次猜测。编辑:是的,我的意思是i==WORD_LENGTH-1。此外,如果条件错误,if(lettergusted.equals(letterArray_value))letterGuessed是一个字符串,letterArray_值是一个字符,因此它们永远不会相等。不,如果(letterGuessed.equals(letterArray_值))LetterGuess是一个字符串,letterArray_值是一个charLook closer。他的预期结果是如果for循环结束,则递增incorrectGuess,无论它是否是正确的猜测。correctGuess仍将使用上述方法递增。我认为他的算法不对,我只是试图解释为什么他的while循环没有结束。谢谢@CaptainSkyhawk我有一个更复杂的算法,但是我在这个项目上遇到了太多的麻烦,所以我决定重新开始简化。不幸的是,我认为你是完全正确的,我的简化造成的问题比它修复的问题还多。我将重写它。*呜咽corner@Taylor,以这种速度,我可能需要更像月亮的东西今晚就好好干吧。