2

我怎样才能像这样在Java中打印金字塔

1
23
456
78910

我当前的代码如下所示:

public class T {
    public static void main(String[] args) {
        int i, j, num = 1;
        int n = Integer.parseInt(args[0]);

        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.println(num);
                num++;
            }
            System.out.println(" ");
        }
    }
}

如果我尝试删除声明的i&j然后它显示一个数组越界异常但是 'i' & 'j' 正在造成问题。我的代码应该是什么样子。

4

5 回答 5

2
    int val=1;
    for(int i=0;i<6;i++){
        for(int j=1;j<i;j++){
             System.out.print(val);
            val++;
        }
        System.out.print("\n");
    }

最初 val 等于 1 。在第一个for循环内 i=0 和 j 从 1 开始增加,但是当 i=0 时,第二个 for 循环不运行。然后你得到第一个值为 1。然后它将指向新行。

当 i=1,j 仍为 1 时,第二个for循环运行 1 次并打印 2,因为 val 具有增量(val++)。当 j=2 在内部for循环中它没有运行时,只打印 val 的新值(3)。

所以这会起作用

于 2013-06-27T17:23:42.690 回答
2
public static void main(String[] args) {
    int num = 1;
    //i is how many numbers per row
    for(int i = 1; i < 5; i++){
        //prints i numbers because j increases from 0 to i, incrementing num each time
        for(int j = 0; j < i; j++){
            System.out.print(num++);
        }
        System.out.println();
    }
}

此代码将适用于您的目的。

现在,如果您想更好地理解 Java,请继续阅读,看看为什么编译器会在您的代码中抛出错误。您不应该使用 stackoverflow 在不理解的情况下复制粘贴其他人的代码。在您的代码中,您声明ij两次。在 Java 中,您不能两次声明一个变量。您首先int i,j, num = 1;在每个 for 循环中执行此操作,然后再次执行此操作for (int i = 1; i <= lines; i++)。你可以通过说来纠正这个问题for(i = 1; i <= lines; i++)。注意在循环int的第二个版本中是如何遗漏的。for您可以简单地在 for 循环中为变量赋值,而不是像声明类型时那样创建新变量int i = 1

for 循环的语法是:

for(initialization; Boolean_expression; update)

{
   //Statements
}

首先执行初始化步骤,并且只执行一次。此步骤允许您声明和初始化任何循环控制变量。只要出现分号,您就不需要在此处声明。

至于您收到的数组越界错误,您正在尝试在语句中读取命令行参数int n = Integer.parseInt(args[0]);注意 main 方法如何具有参数String[] args。这些称为命令行参数,如果您从命令行手动运行程序,则可以传入。您试图读取 .args[0]范围之外的内容args[]

换句话说,如果你运行

java MyProgram one two

然后 args 包含:

[ “一二” ]

public static void main(String [] args) {
   String one = args[0]; //=="one"
   String two = args[1]; //=="two"
}
于 2013-06-27T17:39:11.570 回答
0

我想你把行数作为你唯一的参数,所以代码是

public static void main(String[] args) 
{
    int lines = Integer.parseInt(args[0]);
    int num = 1;
    for (int i = 1; i <= lines; i++) {
        for (int j = 1; j <= i; j++) {
            System.out.print(num);
            num++;
        }
        System.out.println("");
    }
}
于 2013-06-27T17:26:41.800 回答
0
int l=1;

for (int i=0; i<5; i++)
  {
     for (int k=0; k<5-i; k++)
     {
        System.out.print(" ");          
     }
     for (int j=0; j<(i*2)+1; j++)
     {
        if(j%2!=0){
            System.out.print(l++);
        }else {
            System.out.print(" ");
        }           
     }
     System.out.println("");
  }
于 2014-10-28T19:08:53.797 回答
0
public static void pyramid(int max) {
    int num = 1;
    max = 4;
    for (int row = 0; row < max; row++) {
        for (int column = 0; column < max; column++) 
            System.out.print(column <= row ? num++ : " ");
        System.out.println();
    }     
}
于 2017-02-18T12:57:12.890 回答