以表格形式显示两个1D和一个2D阵列

时间:2014-10-30 09:31:28

标签: java arrays multidimensional-array

我是Java学习者并且正在测试Java代码,目前在Java方面没有太多的把握。

目前我想要实现的是我有两个1D数组的String和一个2D数组的整数。我希望结果以表格形式显示,但我无法这样做。我的代码如下。

import java.util.*;

public class StudentResults {
    static String studentName;
    static String courseName;
    static int courseMarks;
    static String[] student = { "Jack Smith", "Jim Lucas", "Beck Barber",
            "Ann Walker", "Lucy Boxer" };

    static String[] course = { "Maths", "Business", "Java", "Design", "Project" };

    public static void studentMarks() {
        int[][] marks = { { 89, 70, 56, 87, 65 }, { 70, 65, 70, 83, 78 },
                { 60, 90, 63, 56, 79 }, { 74, 78, 45, 73, 85 },
                { 80, 90, 60, 70, 80 } };

        for (int i = 0; i < student.length; i++) {
            studentName = student[i];
            System.out.printf("\t\t" + studentName + "\t");

        }
        System.out.println("");
        for (int j = 0; j < course.length; j++) {
            courseName = course[j];
            System.out.println(courseName + "\t");
        }
        for (int m = 0; m < marks.length; m++) {
            for (int n = 0; n < marks.length; n++) {
                courseMarks = marks[m][n];
                System.out.print("\t\t" + courseMarks + "\t\t");
            }
            System.out.println("");
        }

    }

    public static void main(String args[]) {
        studentMarks();

    }
}

我得到的标记输出在表格中,但不与课程名称一致。只是想知道我是否有办法以我工作的方式实现这一目标。

干杯,

2 个答案:

答案 0 :(得分:0)

我认为这是某种家庭作业(或自学),所以我会给出一个提示,而不是完整的解决方案:

您要打印每个主题,然后打印该特定主题的每个标记。 目前,您正在打印所有主题的列表,然后您将为每个主题打印标记。

所以这部分代码:

    for (int j = 0; j < course.length; j++) {
        courseName = course[j];
        System.out.println(courseName + "\t");
    }
    for (int m = 0; m < marks.length; m++) {
        for (int n = 0; n < marks.length; n++) {
            courseMarks = marks[m][n];
            System.out.print("\t\t" + courseMarks + "\t\t");
        }
        System.out.println("");
    }

应该是嵌套循环而不是两个单独的循环。也就是说,第二个循环应该在第一个循环内。

所以你打印一个主题,然后是该主题的所有标记,然后是下一个主题,然后是第二个主题的所有标记,依此类推

在你得到你想要的确切布局之前还有一些摆弄。但请记住System.out.println()将打印参数后跟一个新行。

答案 1 :(得分:0)

删除第二个for循环以打印课程,并在第三个循环中添加逻辑以打印课程。

代码应如下所示。

import java.util.*;

public class StudentResults {
static String studentName;
static String courseName;
static int courseMarks;
static String[] student = { "Jack Smith", "Jim Lucas", "Beck Barber",
        "Ann Walker", "Lucy Boxer" };

static String[] course = { "Maths", "Business", "Java", "Design", "Project" };

public static void studentMarks() {
    int[][] marks = { { 89, 70, 56, 87, 65 }, { 70, 65, 70, 83, 78 },
            { 60, 90, 63, 56, 79 }, { 74, 78, 45, 73, 85 },
            { 80, 90, 60, 70, 80 } };

    for (int i = 0; i < student.length; i++) {
        studentName = student[i];
        System.out.printf("\t\t" + studentName + "\t");

    }
    System.out.println("");
    /*for (int j = 0; j < course.length; j++) {
        courseName = course[j];
        System.out.println(courseName + "\t");
    }*/
    for (int m = 0; m < marks.length; m++) {
         courseName = course[m];
         System.out.print(courseName + "\t\t");
        for (int n = 0; n < marks.length; n++) {
            courseMarks = marks[m][n];
            System.out.print("\t\t" + courseMarks + "\t\t");
        }
        System.out.println("");
    }

}

public static void main(String args[]) {
    studentMarks();

}

}