2017-09-13 66 views
-1

所以我必须用一个累加循环基本上看是否userInputted字符串中的字符出现在选定的字符串中。

下面我有我的代码,下面是我用作它的测试用例。

public static boolean containsAll (String source, String target) 
{ 
    boolean contains = false; 
    scn = new Scanner (source); 


      String token = scn.next(); 


      if(target.contains(token) || token.isEmpty()) { 
       contains = true; 
      } 



     return contains; 
} 

这是测试用例。第一个不起作用,但其余工作正常。

@Test 
public void testContainsAll() 
{ 
    assertTrue(containsAll("", "")); 
    assertTrue(containsAll("abc", "abracadabra")); 
    assertFalse(containsAll("def", "Defect")); 
    assertFalse(containsAll("x", "")); 
} 

在此先感谢。

+0

“报告中源的每个字符是否在目标至少发生一次”是不是什么'不管contains'方法做,因为它会检查是否字符串包含指定子,而不是是否包含从字符串中的所有字符他们的订单或金额。您需要遍历字符串字符并检查其他字符串中的某个字符是否与它相等。 – Pshemo

+2

''scn.next()''给你下一个单词,而不是下一个字符... – f1sh

+0

好的一秒钟大声笑。我试图想要做到这一点。 – SassyRegards201

回答

1

非常感谢所有帮助。我的代码创建一个布尔变量并将其初始化为true。然后我创建一个for循环遍历userInputted字符串的所有字符,并且如果target在该迭代中不包含该字符的值,则contains将设置为false。否则我返回包含之前已初始化为true的内容。

public static boolean containsAll (String source, String target) 
{ 

    boolean contains = true; 

    for (int i = 0; i < source.length(); i++) 
    { 

     if (!target.contains(String.valueOf(source.charAt(i)))) 
     { 
      contains = false; 
     } 
    } 

    return contains; 

} 
相关问题