我试图基本上报告 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"));
}
这就是结果。
提前谢谢大家。
最佳答案
我修改了您的代码,它输出了预期的真实值。
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/