2013-03-31 10 views
2

这是我的代码到目前为止。我被困住了,我不知道该怎么做。谢谢您的帮助!创建静态方法来比较char和char两个字符串。如果字符串a中的所有字母都在字符串b中,则返回true。否则,返回false

public static boolean checkWord(String a, String b){ 

    int x = 0; 
    while (x < a.length()){ 
     int y = 0; 
     while (y < b.length()){ 
     if(a.charAt(x)==b.charAt(y)){ 
      String t = "next"; 
      System.out.println(t); 
      y++; 
     }else{ 

     } 
     } 
     x++; 
    } 
    return false; 
    } 
+2

想想你的代码中使用'break'。如果在第二个字符串中找不到字符,则应立即返回false。否则在结尾处返回true。 – ogzd

回答

1

我还没有编译这段代码,但它应该可以工作。

public static boolean checkWord(String a, String b) 
{ 
    int j; 
    for(int i = 0; i < a.length(); i++) 
    { 
     j = 0; 
     while(j < b.length()) 
     { 
      if(a.charAt(i) == b.charAt(j)) break; 
      j++; 
     } 
     if(j == b.length()) return false; 
    } 
    return true; 
} 

从我明白,你想看看是否“A”包含在“B”字母中没有特定的顺序,即你不是在寻找是否“一”是“B的一个子”。

外循环将遍历字符串a中的每个单个字符,而内循环将运行多次它发现匹配。如果没有匹配,内部循环会将其控制变量'j'增加到'b'的大小。这就是为什么你要在内循环之后进行检查 - 如果检查通过,这意味着在字符串'b'的任何地方都没有找到字符串'a'的字母,因此程序可以返回false;

如果outer for循环定期完成,则表示所有字母都匹配,并且该函数将返回true。

+1

谢谢!有用。 – fa4prez

0
public static boolean checkWord(String a, String b){ 
    int x = 0; 
    while (x < a.length()){ 
     int y = 0; 
     while (y < b.length()){ 
     System.out.println("x:" + x + " y:" + y + " a.charAt(x)==b.charAt(y):" + (a.charAt(x)==b.charAt(y))); 
     if(a.charAt(x)==b.charAt(y)){ 
      break; 
     }else{ 
      y++; 
     } 
     if (y == b.length()) { 
      return false; 
     } 
     } 
     x++; 
    } 
    return true; 
    } 
相关问题