java中查找某个学生在不在数组中

可以帮忙看看这是哪有问题吗?不管在不在数组内都显示不在数组。

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,无需在查找了。
最终效果:

img


希望可以帮到您。

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();
    }
}

运行结果:

img

对于字符串类型String,使用==符号比较的是地址值而不是常量内容,我们需要调用String类中重写的equals方法来比较字符串的值是否相等。
也就是需要用n.equals(room104[i])作为if的判断条件,我们用n来调用主要是因为n不为空,可以预防出错。
如果觉得有帮助你理解为什么不能用==,希望采用一下我的回答,哈哈哈哈,加油学!

看标题就猜到多半是 == 和 equals 的问题