Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除/不显示空值?_Java - Fatal编程技术网

Java 如何删除/不显示空值?

Java 如何删除/不显示空值?,java,Java,因此,我的问题是,当我运行程序时,如何删除/不显示空值、多余的未找到值和0,以及Student201的最后两个属性,当“运行”时,它以相反的顺序显示,这意味着首先显示空值或多余的未找到值或零 另外,我如何添加学生的“预定义” Main.java public class Main { public static void main(String[] args) { // TODO Auto-generated method stub //Stud

因此,我的问题是,当我运行程序时,如何删除/不显示空值、多余的未找到值和0,以及Student201的最后两个属性,当“运行”时,它以相反的顺序显示,这意味着首先显示空值或多余的未找到值或零

另外,我如何添加学生的“预定义”

Main.java

public class Main {
        public static void main(String[] args) {
        // TODO Auto-generated method stub

        //Student a1=new Student();
        //a1.choosy();

        Student201 a2 =new Student201();
        a2.studinfo();
        a2.findstud("2000000001);
    }

}
Student201.java

public class Student201 {

    Student [] studarray = new Student[13];
    int x;
    public void studinfo()
    {



        for (x=0;x<studarray.length;x++) {

            studarray[x]= new Student();

        }


        Student estudyante1 = new Student();
        Student estudyante2 = new Student ();
        Student estudyante3 = new Student ();
        Student estudyante4 = new Student ();
        Student estudyante5 = new Student ();

        estudyante1.getStudName("Yves Francisco");
        estudyante1.getStudNum(2000000001);
        estudyante1.getYrLvl(5);
        estudyante1.getKors("CpE");
        estudyante1.getGender("Male");

        estudyante2.getStudName("Lance Eco");
        estudyante2.getStudNum(2000000002);
        estudyante2.getYrLvl(5);
        estudyante2.getKors("CpE");
        estudyante2.getGender("Male");

        estudyante3.getStudName("Karlos Castillo");
        estudyante3.getStudNum(2000000003);
        estudyante3.getYrLvl(5);
        estudyante3.getKors("CpE");
        estudyante3.getGender("Male");

        estudyante4.getStudName("Glenn Bordonada");
        estudyante4.getStudNum(2000000004);
        estudyante4.getYrLvl(4);
        estudyante4.getKors("ECE");
        estudyante4.getGender("Male");

        estudyante5.getStudName("Tim Tolentino");
        estudyante5.getStudNum(2000000005);
        estudyante5.getYrLvl(4);
        estudyante5.getKors("ECE");
        estudyante5.getGender("Male");

        studarray[0]=estudyante1;
        studarray[1]=estudyante2;
        studarray[2]=estudyante3;
        studarray[3]=estudyante4;
        studarray[4]=estudyante5;


    }
    public void findstud (String query) //String query for searching 

    {

    int ercatch=0;

    try{

         ercatch=Integer.parseInt(query);
       }

        catch (NumberFormatException m)
       {


       }

    for (x=0;x<studarray.length;x++) 
    {

        if (query.equalsIgnoreCase(studarray[x].setStudName())) //query.equalsIgnorecase for case sensitive inputs
        {
            System.out.println(studarray[x].setStudName()+"\n"+studarray[x].setStudNum()+"\n"+studarray[x].setYrLvl()+"\n"+studarray[x].setKors()+"\n"+studarray[x].setGender()+"\n");
            System.out.println("\n");
        }




    }

    for (x=0;x<studarray.length;x++) 
    {
        if (ercatch == studarray[x].setStudNum()) //Integer.parseInt for int data types
        { 

            System.out.println(studarray[x].setStudName()+"\n"+studarray[x].setStudNum()+"\n"+studarray[x].setYrLvl()+"\n"+studarray[x].setKors()+"\n"+studarray[x].setGender());
            System.out.println("\n");
        }

        else if (ercatch != studarray[x].setStudNum()) 
        {

            System.out.println("Not Found!");
        }


    }

    for (x=0;x<studarray.length;x++) 
    {

        if (ercatch == studarray[x].setYrLvl()) 
        {
            System.out.println(studarray[x].setStudName()+"\n"+studarray[x].setStudNum()+"\n"+studarray[x].setYrLvl()+"\n"+studarray[x].setKors()+"\n"+studarray[x].setGender());
            System.out.println("\n");
        }

        else if (ercatch != studarray[x].setYrLvl())
        {
            System.out.println("Not Found!");
        }

    }

    for (x=0;x<studarray.length;x++)
    {

        if (query.equalsIgnoreCase(studarray[x].setKors())) 
        {

            System.out.println(studarray[x].setStudName()+"\n"+studarray[x].setStudNum()+"\n"+studarray[x].setYrLvl()+"\n"+studarray[x].setKors()+"\n"+studarray[x].setGender());
            System.out.println("\n");
        }


    }

    for (x=0;x<studarray.length;x++) 
    {
        if (query.equalsIgnoreCase(studarray[x].setGender())) 
        {

            System.out.println(studarray[x].setStudName()+"\n"+studarray[x].setStudNum()+"\n"+studarray[x].setYrLvl()+"\n"+studarray[x].setKors()+"\n"+studarray[x].setGender());
            System.out.println("\n");
        }


    }



 }

    public void addstud (String query) 

    {


    }

}

首先,您完全混淆了getter和setter,getter应该返回不带任何参数的值,setter使用参数将字段设置为vala ue,如下所示

public void setStudName (String name) {
    this.StudName=name;
}

public String getStudName() {
    return StudName;
}

public void setStudNum (int numero) {
    this.StudNum=numero;
}

public int getStudNum() {
    return StudNum;
}
因为您不想显示未找到的结果,所以我将其删除,这是您的Student201类

}

如何删除/不显示空值、多余的未找到值和0

首先,去掉这个

    for (x=0;x<studarray.length;x++) {
        studarray[x]= new Student();
    }
然后,除您定义的学生外,所有学生都为null,您可以显式忽略这些学生

for (int x = 0; x < studarray.length; x++) {
    Student s = studarray[x];
    if (s == null) {
        continue; // here
    }

    // Check all your fields in a single loop
    if (query.equalsIgnoreCase(s.getStudName())) {

    } else if (Integer.parseInt(query) == s.getStudNum()) {

    } else {
        System.out.println("Student not found using query " + query);
    }
}

顺便说一句,你把getter和setter弄混了:getX不应该接受任何参数并返回字段值,而setX应该接受一个参数并将字段设置为该值。谢谢,伙计,我知道这是一个liitle混淆了,我将set命名为get和get to set,但无论如何,这都是命名约定,谢谢!您可以将每个if语句移动到数组上的单个for循环中,并将它们转换为ORconditions@RogerT谢谢你,巴德,但是如果我删除了循环中的else if,那么如果用户像a2.FindStud20000009那样搜索,并且20000009不在我的预定义数据中,那该怎么办呢,这就是为什么我将else if放在该区域的原因:,我只是搞不懂为什么输出有时显示0和null,而在程序的实际输出之前没有找到,有时实际输出显示在最后。这是因为阵列还是内存?@cricket\u 007谢谢你,巴德,但是我如何实现它,它可能会破坏整个过程???@yvesfricsanco你真的想做完全相同的循环来分别检查每个字段吗?从运行时的角度来看,对于M个字段和N个学生,您正在运行M*N个总计计算,使解决方案不是最优的。您可以在数组上有一个for循环,然后将每个if语句放在该循环中。。。什么都不是ruined@cricket_007好的,我稍后再试,如果成功的话再来,谢谢你,巴德!我也会试试,或者它能起作用,谢谢!,因此,对于开始时的循环导致它,你能告诉我吗?还有一件事,当我选择在a2.findstud4中使用螺柱编号或yr lvl查找时;这表明:这是唯一的记录这是唯一的记录这是唯一的记录Glenn Bordonada 20000004 4如果它有效,请使用帖子旁边的复选标记接受答案。新学生[13]制造了那么多空对象。。。你只定义了5个学生。如果您预先填写了列表,则无法知道这是一个默认的学生对象还是一个您添加了值的数据。。。关于第二个问题,不要打印“这是唯一的值”
    for (x=0;x<studarray.length;x++) {
        studarray[x]= new Student();
    }
for (int x = 0; x < studarray.length; x++) {
    Student s = studarray[x];
    if (s == null) {
        continue; // here
    }

    // Check all your fields in a single loop
    if (query.equalsIgnoreCase(s.getStudName())) {

    } else if (Integer.parseInt(query) == s.getStudNum()) {

    } else {
        System.out.println("Student not found using query " + query);
    }
}