Java 使用.equals()检查字符串中的字符无效

Java 使用.equals()检查字符串中的字符无效,java,string,Java,String,我试图检查用户提交的信件是否包含在字符串中,但它总是返回false。据我所知,.equals()函数应该可以工作。我希望如果用户输入字母“a”,如果字符串是“america”,它会返回“pass” for(int i=0;i长度为1的字符串。(或内部的任何其他字母) 当您学习使用方法时,要养成的一个好习惯是查看方法应用或返回的数据类型。例如,您无法对以下内容进行编码:char scanner.nextLine()//nextLine()用于读取字符串,而不是字符。因此,在您的代码outputTe

我试图检查用户提交的信件是否包含在字符串中,但它总是返回false。据我所知,.equals()函数应该可以工作。我希望如果用户输入字母“a”,如果字符串是“america”,它会返回“pass”

for(int i=0;i
基于
outputTest.length()
outputTest.charAt()
我假设
outputTest
是字符串。
基于
userInput.equals
我假设它不是像
char
那样的基元类型(因为基元类型没有方法)。它也不是
字符
,否则您会看到
通过
几次。所以它很可能也是字符串


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 }

将失败,您将立即转到
返回false


如果要检查一个
字符串是否包含另一个
字符串,可能需要使用
contains
方法

outputTest.contains(userInput)

基于
outputTest.length()
outputTest.charAt()
我假设
outputTest
是字符串。
基于
userInput.equals
我假设它不是像
char
那样的基元类型(因为基元类型没有方法)。它也不是
字符
,否则您会看到
通过
几次。所以它很可能也是字符串


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 }

将失败,您将立即转到
返回false


如果要检查一个
字符串是否包含另一个
字符串,可能需要使用
contains
方法

outputTest.contains(userInput)

您的对象的数据类型是什么?您似乎正在将字符串对象与charAt()方法返回的字符进行比较。这将始终返回false。

对象的数据类型是什么userInput?您似乎正在将字符串对象与charAt()方法返回的字符进行比较。这将始终返回false。

要在另一个字符串中查找字符串,只需执行以下操作:

return text.contains(string);
要在字符串中查找字符,请执行以下操作

return text.indexOf(ch) > -1;

要在另一个字符串中查找字符串,只需执行以下操作:

return text.contains(string);
要在字符串中查找字符,请执行以下操作

return text.indexOf(ch) > -1;

当您学习使用方法时,要养成的一个好习惯是查看方法应用或返回的数据类型。例如,您无法对以下内容进行编码:
char scanner.nextLine()//nextLine()用于读取字符串,而不是字符。
因此,在您的代码
outputTest.charAt(i)//我是一个字符
,而此
userInput.equals()//我是一个字符串
,您正在比较不同的内容。你不能把苹果和桌子比较,因为它们是两个不同的物体。编译器总是告诉您false

我假设:
stringinput=scanner.nextLine()用户输入一个字母,你可以考虑<代码>“A”/代码>长度为1的字符串。(或内部的任何其他字母)


当您学习使用方法时,要养成的一个好习惯是查看方法应用或返回的数据类型。例如,您无法对以下内容进行编码:
char scanner.nextLine()//nextLine()用于读取字符串,而不是字符。
因此,在您的代码
outputTest.charAt(i)//我是一个字符
,而此
userInput.equals()//我是一个字符串
,您正在比较不同的内容。你不能把苹果和桌子比较,因为它们是两个不同的物体。编译器总是告诉您false

我假设:
stringinput=scanner.nextLine()用户输入一个字母,你可以考虑<代码>“A”/代码>长度为1的字符串。(或内部的任何其他字母)


将输出变量发送给我。。我的意思是它包含什么?使用
outputTest.substring(i,i+1)
而不是
outputTest.charAt(i)
。将您的outputTest变量发送给我。。我的意思是它包含什么?使用
outputTest.substring(i,i+1)
而不是
outputTest.charAt(i)