我正在尝试检查用户提交的信件是否包含在字符串中,但它总是返回false。从我读到的.equals()函数应该工作。我期待如果用户输入字母“a”,如果字符串是“美国”,它将返回“通过”。
for (int i = 0; i < outputTest.length(); i++){
if (userInput.equals(outputTest.charAt(i))){
System.out.println("Pass");
}else {
System.out.println("Fail");
}
}
答案 0 :(得分:1)
基于outputTest.length()
和outputTest.charAt()
我假设outputTest
是字符串。
基于userInput.equals
我假设它不是像char
这样的原始类型(因为原始类型没有方法)。它也不是Character
,否则您会看到Pass
几次。所以很可能也是String。
outputTest.charAt(i)
会返回char
,但您要将其与等于方法的String
进行比较:
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 }
因为equals
期待Object
,char
(从outputTest.charAt(i)
返回)将自动加到Character
,但由于Character
没有&String
#39; t扩展if (anObject instanceof String)
测试
return false;
将失败,您将立即转到contains
。
如果您想检查一个String
是否包含其他
outputTest.contains(userInput)
方法
a ; b
b ; c
c ; d,e
答案 1 :(得分:1)
要在另一个字符串中查找字符串,只需执行:
return text.contains(string);
要在字符串中查找字符,请执行
return text.indexOf(ch) > -1;
答案 2 :(得分:0)
对象 userInput 的数据类型是什么?您似乎将String对象与charAt()方法返回的字符进行比较。这总是会返回错误。
答案 3 :(得分:0)
当您学习使用方法时,开发的一个好习惯是查看方法应用或返回的数据类型。例如,您无法对此进行编码:07 * * * * /usr/bin/php /var/www/html/folder/cron.php
因此,在您的代码char scanner.nextLine() // nextLine() is to read String, not char.
和此outputTest.charAt(i) // I am a char
中,您正在比较不同的内容。您不能将苹果与桌子进行比较,因为它们是两个不同的对象。编译器总是会告诉你错误。
我假设:userInput.equals() // I am a String
用户输入一个字母,您可以将String inputTest = scanner.nextLine();
视为长度为1的字符串(或其他任何字母)
"a"