【问题标题】:Return with a for loop使用 for 循环返回
【发布时间】:2015-12-27 06:43:23
【问题描述】:

我使用的代码如下。据我所知,代码的逻辑很好,但是当返回是在打印字符 B 之后,for 循环中的 I 不会增加。如果我删除 return 语句,那么 for 循环也会按照我的意愿递增,但是如果打印了 B/W,我需要该方法结束,所以我需要 return 存在。非常感谢任何帮助我一直在努力解决几个小时以来的问题。

if(currentCodeString.contains("" + currentGuessChar)) {
        for (int i = 0; i < codeLength; i++) {
            System.out.println("" + i);
            //System.out.println(currentGuess[i] + " - " + currentCode[i]);
            if(checkPins(currentGuess[i], currentCode[i])) {
                System.out.print("B");
                return;
            }
        }
        System.out.print("W");
        return;
    }

【问题讨论】:

  • 如果你已经找到了'B',为什么还要增加? (如果这是预期目的)。不确定具体情况,请您详细说明一下?
  • 您为什么要担心i 是否增加? i 是一个局部变量,其作用域仅限于循环。
  • 您预计会发生什么?目前还不是很清楚你要做什么。您应该使用break 而不是return
  • 你想实际执行什么?请清楚地解释您的问题。此外,您可以在方法中看到 Continue、BREAK(in a loop)、Return 的用法。
  • 我有两个字符串,它们将被一起比较,如果它们在字符串中的相同位置具有相同的字符,那么 B 将被打印,如果它在字符串中但不在正确的位置,然后将打印 W。

标签: java loops if-statement for-loop


【解决方案1】:

在你的 for 循环中使用 break 而不是 return

if(currentCodeString.contains("" + currentGuessChar)) {
        for (int i = 0; i < codeLength; i++) {
            System.out.println("" + i);
            //System.out.println(currentGuess[i] + " - " + currentCode[i]);
            if(checkPins(currentGuess[i], currentCode[i])) {
                System.out.print("B");
                break;
            }
        }
        System.out.print("W");
        return;
    }

return 表示 - “结束方法”,break 表示 - “结束循环”

【讨论】:

  • 如果找到“B”或“W”,他需要返回。不确定在这里打印两个“BW”有何帮助。为什么要从 for 循环中删除 return?
  • 他只需要另一个if 语句来检查B。
  • 如果他想打印B,那么他的初始代码是正确的,还是他想多次打印B??
  • 代码需要打印黑白或者什么都不打印然后结束方法。
  • @AzatNugusbayev 初始代码似乎没问题。不知道问题出在哪里。
【解决方案2】:

您应该在打印“B”后将return 语句替换为break

【讨论】:

  • 我尝试了中断,但它似乎也没有工作,代码在昨晚按我的预期工作,但今天早上它不起作用,我把它缩小到这个 for 循环不增加。它总是将数组中的 0 元素与另一个数组中的另一个 0 元素进行比较,而不是遍历所有 0、1、2、3 直到 codeLength。
  • @maverick 如果使用 break 那么它也将只检查第一个字符,然后它会从循环中中断。
【解决方案3】:

为什么不使用“Break”而不是“Return”? 当B打印时,Break it!

线程编程中return的使用。

【讨论】:

    【解决方案4】:

    这是我的解决方案(没有中断,我不喜欢)

    if(currentCodeString.contains("" + currentGuessChar)) {
            bool found = false;
            for (int i = 0; i < codeLength && !found; i++) {
                System.out.println("" + i);
                //System.out.println(currentGuess[i] + " - " + currentCode[i]);
                if(checkPins(currentGuess[i], currentCode[i])) {
                    System.out.print("B");
                    found = true;
                }
            }
            if (!found) {
                System.out.print("W");
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 2019-05-01
      • 2016-02-25
      • 2016-12-30
      • 2011-11-25
      • 2015-10-26
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多