在控制台上用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
& j
然后它显示一个超出范围的数组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复制粘贴别人的代码而不理解它。 在你的代码中,你两次声明i
和j
。 在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(); } }