【问题标题】:2 dimensional array in java error(prints with null)java中的二维数组错误(以null打印)
【发布时间】:2018-04-18 22:45:40
【问题描述】:

它以空值打印...我该如何摆脱它?它给了我例如:

现在:

狮子座 null null null

如果它没有达到 4,我希望它只打印 Leo。

这是我当前的代码:

import java.util.*;
import java.io.*;

public class Trial {

    public static void main(String[] args) {

        String [] Student ={"Tom", "Jack", "Gio", "Leo"};
        String[][] Attendance = new String[4][4];



        System.out.println("STUDENT LIST-TAKE ATTENDANCE");

        for(int i = 0; i<4; i++){
            System.out.println("Type 1 for Present, 2 for Absent, 3 for Fieldtrip, or 4 for Late " + "for " + Student[i]);
            Scanner scan1 = new Scanner(System.in);
            double Att = scan1.nextDouble();

            int j = 0;

            if (Att == 1){
                Attendance[0][j] = Student[i];
                j++;
            }

            else if(Att == 2){
                Attendance[1][j] = Student[i];
                j++;
            }

            else if(Att == 3){
                Attendance[2][j] = Student[i];
                j++;
            }

            else if(Att == 4){
                Attendance[3][j] = Student[i];
                j++;
            }

            else
                System.out.println("Retry");

        }

        System.out.println("Present: ");
        for (int k = 0; k<=3; k++)
            System.out.print(Attendance[0][k] + "   ");
            System.out.println();

        System.out.println("Absent: ");
        for (int k = 0; k<=3; k++)
            System.out.print(Attendance[1][k] + "   ");
            System.out.println();

        System.out.println("Fieldtrip: ");
        for (int k = 0; k<=3; k++)
            System.out.print(Attendance[2][k] + "   ");
            System.out.println();

        System.out.println("Late: ");
        for (int k = 0; k<=3; k++)
            System.out.print(Attendance[3][k] + "   ");
            System.out.println();


        /*
        String[][] Attendance = {
            { "Present", },
            { "Absent",  },
            { "Fieldtrip", },
            { "Late",  }

        };


            System.out.println();
        for (int i = 0; i < Attendance; i++) {
            System.out.print(Attendance[i][0] + ": ");
            for (int j = 1; j < Attendance[i].length; j++) {
                System.out.print(Attendance[i][j] + " ");
         }
         */

        }
    }

【问题讨论】:

  • 嗯,打印前可以检查是否为null。
  • A) 阅读有关 java 命名约定 - 变量名采用 camelCase - 总是 B) 阅读有关使用浮点数的信息。您基本上永远不会直接使用 == 比较它们。

标签: java arrays loops oop dynamic-arrays


【解决方案1】:

我以这个为例,其余的你应该能猜出来:

System.out.println("Present: ");
for (int k = 0; k<=3; k++)
    System.out.print(Attendance[0][k] + "   ");
System.out.println();

您现在遇到的问题是即使它们为空也会打印出来,因此在打印之前添加一个检查:

System.out.println("Present: ");
for (int k = 0; k<=3; k++) {
    if (Attendance[0][k] != null) {
        System.out.print(Attendance[0][k] + "   ");
    }
}
System.out.println();

现在,如果您确定一旦遇到空值,则每个后续值也将为空,如果遇到这种情况,您可以跳出循环:

System.out.println("Present: ");
for (int k = 0; k<=3; k++) {
    if (Attendance[0][k] != null) {
        System.out.print(Attendance[0][k] + "   ");
    } else {
        break;
    }
}
System.out.println();

【讨论】:

  • 太棒了!谢谢。但是,我还有另一个问题。如果我所有的学生都在场。所以我会这样做:Tom-1,Jack,-1... 等等,然后我得到的只是最后一个,因为它们重叠。它打印:现在:狮子座,缺席,迟到和实地考察:空
  • @ronix_247_DOIT 也对其他代码块进行相同的更改。
  • 只有在每列有一个名称的情况下才会去除空值
猜你喜欢
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多