public class CharMatch {
private void matchString(String s1, String s2) {
int count = 0;
int len1 = s1.length();
int len2 = s2.length();
for (int i = 0; i < len2; i++) {
for (int j = 0; j < len1; j++) {
if (s2.charAt(i) == s1.charAt(j)) {
count++;
}
if (count == len2) {
System.out.print("True");}
}
}
}
public static void main(String args[]) throws IOException {
CharMatch cm = new CharMatch();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter First String");
String a = br.readLine();
System.out.println("Enter Second String");
String b= br.readLine();
cm.matchString(a,b);
}
}
我正在编写此代码以输入两个字符串,例如输入:s1="Hello world" s2:"woeh"
如果s2
中的所有字符在s1
中至少匹配一次,则输出应为true。这是我写的代码,但我没有按照需要获得完美的输出。
答案 0 :(得分:1)
这是我写的代码,但我没有按照需要获得完美的输出。
您的代码存在一些问题。
"woeh"
字符中匹配"Hello world"
的问题是,如果您希望'h'
与'H'
匹配,则需要小写字符串以不区分大小写的方式。'o'
两次字符,而我认为你不想做。一旦找到第一个字符匹配,您应该在count++;
之后休息一下。此外,您应该在与if (count == len2) {
相同的块中测试count++
,如果是真的话,您应该从方法返回。您也可以在方法结束时执行此操作。最终,如果您使用调试器并逐步完成示例,您应该能够找到此错误。这是一个很好的tutorial for eclipse。
我对代码进行了一些改进并使用了String.indexOf(...)
方法并得出了:
private void matchString(String s1, String s2) {
int matchCount = 0;
s1 = s1.toLowerCase();
s2 = s2.toLowerCase();
// go through all characters in the match string
for (char ch : s2.toCharArray()) {
// look for the character in the first string
if (s1.indexOf(ch) >= 0) {
matchCount++;
}
}
if (matchCount == s2.length()) {
System.out.print("True");
}
}
答案 1 :(得分:0)
我想如果角色案件很重要,这一点非常重要。如果不是,我猜这个小代码应该做的工作:
s1 = s1.toLowerCase();
s2 = s2.toLowerCase();
boolean flag = true;
for(char element : s2.toCharArray()){
if(!s1.contains(Character.toString(element))){
flag = false;
}
}
System.out.println(flag);
另一方面,如果字符大小写很重要,请删除s1 = s1.toLowerCase();
和s2 = s2.toLowerCase();
。
祝你的代码好运!
答案 2 :(得分:-1)
使用java字符串contains()方法搜索此字符串中的字符序列。如果在此字符串中找到char值序列,则返回true,否则返回false。
void matchString(String s1,String s2)
{
if(s2.contains(s1))
System.out.print("True");
else
System.out.print("False");
}