java - 为什么这会变成无限循环?

标签 java

我需要这个方法做的就是获取一个字符串,比如“aaxbb”,它将返回true,因为有一个“aa”和一个“bb” ,

如果给定的字符串是 length = 0length = 1 它应该失败。

我遇到的问题是我不知道的..我知道在我的终端中,在 hasAdjacentPair 的第一个测试用例通过后,我得到一个闪烁的光标,这意味着在这个方法中我没有踢出一个我的循环,让它继续检查字符串是否有更多相邻对

第一个测试用例通过,但它是一个空字符串“” = 因为它返回了 false

第二个测试用例通过,而其“a”=,因为它返回 false

我们也不允许使用数组:(

public boolean hasAdjacentPair(String str)
    {
       boolean result = false;

       if (str.length() == 0)
       {
           result = false;
       }
       if (str.length() == 1)
       {
           result = false;
       }

       while (str.length() != 0)
       {
        for (int i = 0; i < str.length() - 1; ++i)
        {
            char adjChar = str.charAt(i);
            char nextAdjChar = str.charAt(i + 1);

            if (adjChar == nextAdjChar)
            {
                result = true;
            }
        }

       }
    return result;
    }

将我的 while 循环 while (str.length() != 0) 更改为 while (str.length() != 0 && str.length() != 1) 这使得测试 2 能够工作

编辑2:在我完全取出while (str.length() != 0)之后,我的所有5个测试用例都通过了:)所以我猜就是这样?

最佳答案

while (str.length() != 0)

始终为真,并且循环永远不会结束。使用字符串长度开关或 if-else 代替 if..if..while 结构。

你可以尝试这样的事情

if (str.length() == 0)
   {
       result = false;
   }
   else if (str.length() == 1)
   {
       result = false;
   }

   else
   {
    for (int i = 0; i < str.length() - 1; ++i)
    {
        char adjChar = str.charAt(i);
        char nextAdjChar = str.charAt(i + 1);

        if (adjChar == nextAdjChar)
        {
            result = true;
            break;
        }
    }

如果您检查至少一对,请使用break语句,因为您已经知道得到了结果

关于java - 为什么这会变成无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733743/

相关文章:

java - 需要泛型转换解释

java - 如何使 MultipartFilter 与 Spring Boot 一起使用

java - 在 Java 中验证字符串/ double 的初学者方法

java - ClassLoader.getResource 不断为现有资源返回 null

java - AspectJ 从另一个特定方法到方法的切入点

java - 如何在java中将两个文本字段放置为一个视口(viewport)?

java - grails,java-在message.properties中使用ECMAScript 6 Unicode代码点转义

Java - 从 JSON 文件读取 JSON 并打印出每个元素?

java - 为什么有些方法使用 boolean 类而不是原始类型?

java - 与 java.lang.Boolean 兼容的预期返回值