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