java - 在java中用二维数组绘制数字钻石

标签 java arrays multidimensional-array

所以我需要在 Java 中使用二维数组制作一个菱形外观的数字。我得到了我的结果,但在钻石之前是空的。对于 drawNumDiamond(9),我必须得到一个一直到 5 并返回的钻石外观。我知道我可以在不使用数组的情况下做到这一点,但我想了解有关二维数组的更多信息:this is how it should look like and what are my results

public class Example1{
  	private static void drawNumDiamond(int h) {

        if(h%2 != 0) {
            int size = h/2 +1;
            int count = 1;
            int loop = 1;
            String[][] dijamant = new String[h][];
            for(int row = 0; row < dijamant.length; row++) {

                dijamant[row] = new String[row+1];

                for(int kolona=0; kolona<=row; kolona++) {

                    dijamant[0][0] = "1";

                    for(int i=0; i< loop;i++) {

                        dijamant[row][kolona]+= count;

                    }

                }
                count++;
                loop+=2;

            }

            for (int k = 0; k < size; k++) {
                System.out.printf("%" + h + "s", dijamant[k]);
                h++;
                System.out.println();
            }
            h--;
            for (int q = size - 2; q>=0; q--) {
                h--;
                System.out.printf("%" + h + "s", dijamant[q]);
                System.out.println();
            }

        }
    }
    public static void main(String[] args) {

            drawNumDiamond(9);

    }
  }

最佳答案

问题出在这一行:

dijamant[row][kolona] += count;

如果 dijamant[row][kolona]null 并且 count 为 2,则字符串连接的结果将为 “null2”。尝试在使用空字符串初始化之前添加以下 if 语句:

if (dijamant[row][kolona] == null) {
    dijamant[row][kolona] = "";
}

这将使您的代码正常工作,但仍有一些事情需要考虑。例如。你一直在循环中设置 dijamant[0][0] = "1";

关于java - 在java中用二维数组绘制数字钻石,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34108972/

相关文章:

c - 如何使用 C 中的函数动态初始化数组

c - 通过引用将 2D VLA 数组传递给函数,返回分配的内存,无指针数组

java - 搜索主类的图像?

java - JTree 实现

java - 为什么 ant 中的 javac 使用不兼容的类型构建脚本错误

ios - XML 到字典的复杂转换 (Swift/iOS)

java - 创建 ArrayList<Integer> 的 ArrayList

java - 使用递归在二叉树中查找包含给定字符串的节点

javascript - 如何使用 Javascript 动态生成输入字段,然后使用它们的值?

c++ - 无法在我的 C++ 类中初始化 2d Vector