java - 如何从输入中读取并报告两个字符串在完全相同的位置是否具有完全相同的 'tokens' ?

标签 java boolean token

我试图基本上报告 string1 和 string2 是否包含相同顺序的完全相同的标记。我找不到我的代码有什么问题。我修复了无限循环,但现在它不检查空字符串。

public static boolean sameTokens (String s1, String s2)
{
    Scanner scan1 = new Scanner(s1);
    Scanner scan2 = new Scanner(s2);

    boolean contains = true;

    String token1 = scan1.next();
    String token2 = scan2.next();




        while (token1.length() <= token2.length())
        {
            if (!(scan1.hasNext() || scan2.hasNext()))
            {
                contains = false;
            }
            if (token1.equals(token2))
            {
                contains = true;
            }

    }

    return contains;

}

这些是我的测试用例。

  @Test
public void testSameTokens ()
{
    assertTrue(sameTokens("this is a test", " this  is  a  test "));
    assertTrue(sameTokens("", ""));
    assertFalse(sameTokens("hello there", "hello there Joe"));
    assertFalse(sameTokens("abc def", "def abc"));
    assertFalse(sameTokens("a", "A"));
    assertFalse(sameTokens("a b c", "abc"));
}

这就是结果。

Result of Test case 1

Image of error

提前谢谢大家。

最佳答案

我修改了您的代码,它输出了预期的真实值。

public static boolean sameTokens(String s1, String s2) {

    Scanner scan1 = new Scanner(s1);
    Scanner scan2 = new Scanner(s2);

    while(scan1.hasNext()||scan2.hasNext()){
        if ((!scan1.hasNext() && scan2.hasNext()) || (!scan2.hasNext() && scan1.hasNext())) {
            return false;
        } else {
            String token1 = scan1.next();
            String token2 = scan2.next();

            if (!token1.equals(token2)) {
                return false;
            }
        }
    }

    return true;
}

希望有帮助。

关于java - 如何从输入中读取并报告两个字符串在完全相同的位置是否具有完全相同的 'tokens' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46247850/

相关文章:

java - Smart 无法安装...没有包提供共享对象文件

c++ - OpenCL 和 std::vector<bool> 不兼容

javascript - javascriptscript 中的意外标记 )

c - 用字符串的一部分填充二维数组

java - 如何访问Java数组中的第一列数据并分配给另一个变量?

java - JBox2D Body 曾经存在,现在为空?

visual-studio - 点击一个按钮,该按钮将无法点击,直到重置

c++ - 与 stdbool.h C++ 接口(interface)

php - Firebase JWT 库无法验证 Python JWT token

java - 在 Spark Streaming 中调用 updateStateByKey 时出错