我编写了代码来查找两个字符串是否相等。用户应该给定第一个字符串输入,并将其与预定义的第二个字符串进行比较。但是,即使我输入的内容与第二个字符串相同,输出也不正确。
import java.util.Scanner;
public class correction {
public static void main(String[] args) {
int i,c=0;
String[] s1=new String[] {"F","R","I","E","N","D","S"};
String[] s2=new String[7];
System.out.println("enter a alphabet");
Scanner sc=new Scanner(System.in);
s2[0]=sc.next();
s2[1]=sc.next();
s2[2]=sc.next();
s2[3]=sc.next();
s2[4]=sc.next();
s2[5]=sc.next();
s2[6]=sc.next();
int length = s1.length;
for(i=0;i<length;i++)
{
if(s1.equals(s2[i]))
c++;
}
if(c==7)
System.out.println("right way");
else
System.out.println("wrong way");
}
}
我希望输出是“正确的方式”,但输出是“错误的方式”。并且c值也为0。
答案 0 :(得分:1)
当前,您正在for循环的每次迭代中将整个数组s1
与s2
中的特定字母进行比较。相反,您应该这样做的是将s1[i]
与s2[i]
进行比较,
int length = s1.length;
for(i=0;i<length;i++)
{
if(s1[i].equals(s2[i]))
c++;
}
if(c==7)
System.out.println("right way");
else
System.out.println("wrong way");
通过这种方式,您现在将s1
中的每个字母与s2
中的每个字母进行比较,假设您只是输入字母作为s2
的输入。
答案 1 :(得分:1)
快速提示:
this
方法中添加.lower()
方法,以避免大写字母引起的问题。 .equals()
数组与一个s1
值进行比较,可以将s2[i]
更改为s1
。 这里是新功能,所以请忽略糟糕的格式。
答案 2 :(得分:0)
s1
是对数组的引用,而s2[i]
是对字符串的引用,这就是s1.equals(s2[i])
求值为false
的原因,这就是{{1 }}永远不会运行。