import java.util.Scanner;//import Scanner
public class review{ //name of the program
public static void main(String[]args){ // main statement
Scanner i=new Scanner(System.in);
System.out.println("Enter a string");
String b=i.nextLine();
System.out.println("Enter a letter");
char c=i.next().charAt(0);
System.out.println("Answer is "+test1(b,c));
}
public static boolean test1(String a, char b){
boolean result= true;
for(int i=0;i<a.length();i++)
if(a.charAt(i)==b)
result =true;
else
result=false;
return result;
}
}
这个程序正在寻找检查char是否在字符串中。
你好,E =真
你好,a = false
答案 0 :(得分:2)
在此方法test1
中,您的for
循环将遍历整行,但会在letter
中找到string
。所以像这样更新:
public static boolean test1(String a, char b){
for(int i=0;i<a.length();i++) {
if(a.charAt(i)==b)
return true;
}
return false;
}
因为,如果在letter
中找到了string
,则您无需进一步检查,因此:
if(a.charAt(i)==b) // if condition finds true path
return true; // so return true
请注意,return
语句会导致执行离开当前的function
或简洁的当前下属。
答案 1 :(得分:1)
你永远不会脱离循环。考虑"Hello"
和'e'
see H: result = false
see e: result = true
see l: result = false...
来自循环的 break
。或者,只需使用String.indexOf(char)
答案 2 :(得分:1)
每次检查后您都在更改结果,而不考虑已找到该字符的选项。 你可以看到twentylemon's answer。
我只是想说一些更加正确和有效的话。
使用break
并返回result
,如果找到该字符,则可以返回true
。
在循环结束时返回false
。
result
变量和休息。
这就是你按照我的建议写的:
public static boolean test1(String a, char b)
{
for(int i=0;i<a.length();i++)
{
if(a.charAt(i)==b)
{
return true;
}
}
return false;
}
如果你要检查它,你会看到它是多么简单和好:)