如何用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'正在创造问题。我的代码应该是什么样的。
答案 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复制粘贴其他人的代码而不理解它。在您的代码中,您声明了i
和j
两次。在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++;
}
}
}