在控制台上用Java打印金字塔

时间:2013-06-27 17:14:40

标签: java

如何用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&amp; j然后它显示一个超出范围的数组异常 然而'我'和'j'正在创造问题。我的代码应该是什么样的。

6 个答案:

答案 0 :(得分: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秒时,循环不运行。然后你得到第一个值为1.然后它将指向新行。

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

这样就行了

答案 1 :(得分: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包含:

[“one”,“two”]

public static void main(String [] args) {
   String one = args[0]; //=="one"
   String two = args[1]; //=="two"
}

答案 2 :(得分: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("");
    }
}

答案 3 :(得分: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("");
  }

答案 4 :(得分: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();
    }     
}

答案 5 :(得分:-1)

程序包pyrimad2;

此代码正常运行,但输出正确


公共类Pyrimad2 {

public static void main(String[] args) {
    // TODO Auto-generated method stub


    int i = 0;
    while (i < 5)
    {
        int j = 0;
        while (j < 5 - i)
        {
            System.out.print(" ");
            j++;
        }
        int k = 0;
        while (k <= i)
        {
            System.out.print(" *"); 
            k++;
        }
        System.out.print("\n");
        i++;
    }
}

}