gpt4 book ai didi

java - 使用 .equals() 检查字符串中的字符不起作用

转载 作者:行者123 更新时间:2023-12-02 03:16:57 24 4
gpt4 key购买 nike

我试图检查用户提交的字母是否包含在字符串中,但它总是返回 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 是 String。
基于 userInput.equals 我假设它不是像 char 这样的原始类型(因为原始类型没有方法)。它也不是 Character,否则您会多次看到 Pass。所以它很可能也是字符串。

<小时/>

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;

<小时/>

如果您想检查一个String是否包含另一个String,您可能需要使用contains方法

outputTest.contains(userInput)

关于java - 使用 .equals() 检查字符串中的字符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40165887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com