在控制台上用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(" "); } } } 

如果我尝试删除声明的ij然后它显示一个超出范围的数组exception但是’i’和’j’正在创建问题。 我的代码应该是什么样的。

  int val=1; for(int i=0;i<6;i++){ for(int j=1;j 

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

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

所以这将工作

 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++)来纠正这个问题。 注意在for循环的第二个版本中如何省略int 。 您可以简单地为for循环中的变量赋值,而不是像声明int i = 1时那样创建新变量

for循环的语法是:

 for(initialization; Boolean_expression; update) { //Statements } 

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

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

换句话说,如果你跑

 java MyProgram one two 

然后args包含:

[ “一二” ]

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

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

 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(""); } } 
 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(""); } 
 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(); } }