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