Java练习——用二维数组显示表格

标签 java arrays multidimensional-array

我正在努力完成一个 java 练习,它涉及使用二维数组根据命令行参数动态创建和显示表格。

例子:

Java 表 5

+-+-+-+-+-+
|1|2|3|4|5|
+-+-+-+-+-+
|2|3|4|5|1|
+-+-+-+-+-+
|3|4|5|1|2|
+-+-+-+-+-+
|4|5|1|2|3|
+-+-+-+-+-+
|5|1|2|3|4|
+-+-+-+-+-+

到目前为止我做了什么:

public static void main(String[] args) {

    int num = Integer.parseInt(args[0]);

    String[][] table = new String[num*2+1][num];

    int[] numbers = new int[num];
    int temp = 0;

    for(int i=0; i<numbers.length; i++)
        numbers[i] = i+1;

        // wrong
    for(int i=0; i<table.length; i++){
        for(int j=0; j<num;j++){
            if(i%2!=0){
            temp=numbers[0];
            for(int k=1; k<numbers.length; k++){
                numbers[k-1]=numbers[k];
            }
            numbers[numbers.length-1]=temp;
            for(int l=0; l<numbers.length; l++){
            table[i][j] = "|"+numbers[l];
            }
            }
            else
                table[i][j] = "+-";
    }
    }

    for(int i=0; i<table.length; i++){
        for(int j=0; j<num; j++)
        System.out.print(table[i][j]);
        if(i%2==0)
            System.out.print("+");
        else
            System.out.print("|");

        System.out.println();}
}

这不起作用,因为它在每一行中打印 1|2|3|4,这不是我需要的。我发现了这个问题,这是因为第一个 for 循环更改数组顺序的次数比需要的次数多,基本上它会像开始时那样返回。

我知道可能有一种方法可以通过编写更多代码来实现这一点,但我总是倾向于在编写代码时尽可能多地嵌套以“优化”代码,所以这就是为什么我尝试使用更少的代码来解决这个练习尽可能使用变量和循环。

最佳答案

你太复杂了。很难找到你的错误。直接代码如下:

public static void main(String[] args) {


    //int num = Integer.parseInt(args[0]);
    int num = 5; // for test

    // creating 2d array
    int[][] figures = new int[num][num];

    // filling the array
    for(int row=0; row<figures.length; ++row) {
        for(int col=0; col<figures[row].length; ++col) {
            figures[row][col] = (row + col) % num + 1; 
        }
    }

    // printing the array
    for(int row=0; row<figures.length; ++row) {

        // printing border
        for(int col=0; col<figures[row].length; ++col) {
            System.out.print("+-");
        }
        System.out.println("+");

        // printing data row
        System.out.print("|");
        for(int col=0; col<figures[row].length; ++col) {
            System.out.print(figures[row][col]);
            System.out.print("|");
        }
        System.out.println();
    }

    // printing final border
    for(int col=0; col<figures[0].length; ++col) {
        System.out.print("+-");
    }
    System.out.println("+");


}

关于Java练习——用二维数组显示表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918167/

相关文章:

java.lang.ArrayIndexOutOfBoundsException : 0 when I try to access to the first argument of args parameters, 为什么?

Java正则表达式匹配方括号

c++ - 在 C/C++ 中将 int* 转换为 int(*)[n]

c - 传递给函数时数组的大小

java - 初始化对象数组

python-2.7 - 将 2D numpy.ndarray 转换为 pandas.DataFrame

java - gradle: java: 找不到系统 Java 编译器

java - 在 Java 中修剪二维数组的有效方法

c - 将字符附加到c中的二维数组值

java - 如何在java中的Graphics2D对象上创建事件