我正在尝试检查用户提交的字母是否包含在字符串中,但它始终返回false。从我的阅读中,.equals()函数应该可以正常工作。我期望如果用户输入字母“ a”,如果字符串是“ america”,它将返回“ pass”。
for (int i = 0; i < outputTest.length(); i++){
if (userInput.equals(outputTest.charAt(i))){
System.out.println("Pass");
}else {
System.out.println("Fail");
}
}
最佳答案
基于outputTest.length()
和outputTest.charAt()
我假设outputTest
是字符串。
基于userInput.equals
我假设它不是像char
这样的原始类型(因为原始类型没有方法)。它也不是Character
,否则您会多次看到Pass
。因此,很可能也是String。outputTest.charAt(i)
返回char
,但是您将其与String
进行比较,后者等于equals方法,如下所示:
964 public boolean equals(Object anObject) {
965 if (this == anObject) {
966 return true;
967 }
968 if (anObject instanceof String) {
969 String anotherString = (String)anObject;
970 int n = value.length;
971 if (n == anotherString.value.length) {
972 char v1[] = value;
973 char v2[] = anotherString.value;
974 int i = 0;
975 while (n-- != 0) {
976 if (v1[i] != v2[i])
977 return false;
978 i++;
979 }
980 return true;
981 }
982 }
983 return false;
984 }
So since equals
expects Object
, char
(returned from outputTest.charAt(i)
) will be automatically boxed to Character
, but since Character
doesn't extend String
test
if (anObject instanceof String)
将失败,您将立即移至
return false;
。如果要检查一个
contains
是否包含另一个String
,则可能要使用方法。outputTest.contains(userInput)