可以帮忙看看这是哪有问题吗?不管在不在数组内都显示不在数组。
import java.util.Scanner;
public class StudentSearch {
public static void main(String[] args) {
Scanner name = new Scanner(System.in);
System.out.println("请输入要查找的学生姓名:");
String n = name.next();
String [] room104 = new String[6];
room104[0] = "zjy";
room104[1] = "zll";
room104[2] = "wzz";
room104[3] = "jfmx";
room104[4] = "lzk";
room104[5] = "zyl";
for (int i = 0;i < room104.length;i++) {
if(n == room104[i]) {
System.out.println("该学生在104宿舍内。");
}else {
System.out.println("该学生不在104宿舍内。");}
}
name.close();
}
}
Scanner name = new Scanner(System.in);
System.out.println("请输入要查找的学生姓名:");
String n = name.next();
String[] room104 = new String[6];
room104[0] = "zjy";
room104[1] = "zll";
room104[2] = "wzz";
room104[3] = "jfmx";
room104[4] = "lzk";
room104[5] = "zyl";
for (int i = 0; i < room104.length; i++) {
if (n.equals(room104[i])) {
System.out.println("该学生在104宿舍内。");
break;
} else {
System.out.println("该学生不在104宿舍内。");
}
}
name.close();
您好,给你改了一下,修改如下:
1、比较不要用==,改为equals,你可以找一下两者的区别。
2、找到后加一个break,无需在查找了。
最终效果:
16号不能用等于,字符串比较要用equals
帮你修改了下,直接测试运行即可
import java.util.Scanner;
public class StudentSearch {
public static void main(String[] args) {
Scanner name = new Scanner(System.in);
System.out.println("请输入要查找的学生姓名:");
String n = name.next();
String [] room104 = new String[6];
room104[0] = "zjy";
room104[1] = "zll";
room104[2] = "wzz";
room104[3] = "jfmx";
room104[4] = "lzk";
room104[5] = "zyl";
for (int i = 0;i < room104.length;i++) {
if(n.equals(room104[i])) {
System.out.println("该学生在104宿舍内。");
}else {
System.out.println("该学生不在104宿舍内。");}
}
name.close();
}
}
运行结果:
对于字符串类型String,使用==符号比较的是地址值而不是常量内容,我们需要调用String类中重写的equals方法来比较字符串的值是否相等。
也就是需要用n.equals(room104[i])作为if的判断条件,我们用n来调用主要是因为n不为空,可以预防出错。
如果觉得有帮助你理解为什么不能用==,希望采用一下我的回答,哈哈哈哈,加油学!
看标题就猜到多半是 == 和 equals 的问题