public class for15{
public static void main(String[] args){
for(int a=1;a<=5;a++){
for(int b=1;b<=a;b++)
System.out.print('★');
System.out.println();
}
}
}
结果是
★
★★
★★★
★★★★
★★★★★
对此很疑惑,我是刚开始学JAVA的,自学到这,对能输出多个★很是疑惑,所以请各位把这个程序流程和原理说一下,尽量说的简单一些,谢谢
public static void main(String[] args){
for(int a=1;a<=5;a++){
for(int b=1;b<=a;b++)
System.out.print('★');
System.out.println();
}
}
}
结果是
★
★★
★★★
★★★★
★★★★★
对此很疑惑,我是刚开始学JAVA的,自学到这,对能输出多个★很是疑惑,所以请各位把这个程序流程和原理说一下,尽量说的简单一些,谢谢
{
public static void main(String[] args)
{
for(int a=1;a <=5;a++) //控制输出行数.
{
for(int b=1;b <=a;b++) //控制每行输出个数.
System.out.print('★'); //给出输出什么字符.
System.out.println(); //换行.
}
}
}第一个循环.a控制只输出1-5行.嵌套了第二个循环,控制第a行做a次第二个for内的语句.
第二个循环体每执行一次,输出一个五角星.第二个for做完之后,第a行就输出了a个五角星了,然后换行,由第一个循环控制做下一次循环.
public class for15
{
public static void main(String[] args)
{
for(int a=1;a <=5;a++) //控制输出行数.
{
for(int b=1;b <=a;b++) //控制每行输出个数.
System.out.print('★'); //给出输出什么字符.
System.out.println(); //换行.
}
}
}
好吧,我再说仔细点啦.
a赋初值1,符合循环判断条件(判断完后,循环递增a++,循环体执行完回来a=2),做第一个for的循环体.
b赋初值1(此时a=1),符合循环判断条件(b++,循环体执行完后b=2),做第二个for的循环体.
System.out.print('*');输出一个*.此时,第二个循环做完,b++,此时,b=2;
此时返回到第二个循环判断条件b<=a处,由于此时a=1,b=2,所以跳出第二个for循环.
System.out.println();换行.到此,第一个for的第一次循环执行完,a++,a=2;
a做第一个循环判断.2<=5成立,做循环体操作.
b第二次初始化为1,此时a=2,b=1,循环判断条件为b<=a,所以这一次第二个循环可以做两次,也就是输出两个*.
.
.
.
后面就是一样的分析方法啦,如果还不明白,那我就没办法了,你可以问一下老师.因为我也才学,讲不太清楚,呵呵.
<=1的有1个
<=2的有2个
<=3的有3个
<=4的有4个
<=5的有5个
整数
当执行完一次内循环时,跳出执行外循环 ,此时a+1。
在进入内循环时,b被初始化,b=1.
也就是说在循环最开始时候变量需要被初始化。
当a=2时语句进入大括号{}, b<=a(此时a=2) b初值为1,执行一次System.out.print('★');语句,打印出一个*;此时b++变为2仍然满足条件b<=a(此时a=2),所以再次执行语句System.out.print('★');,打印出第二个*;此时b++变为3,不满足b<=a(此时a=2)了,于是跳出for(int b=1;b <=a;b++)System.out.print('★'); ,执行System.out.println();,换行! a++变为3,当a=3,4,5时,以此类推...
希望这样将你能明白。
{
public static void main(String[] args){
for(int a=1;a <=5;a++){
for(int b=1;b <=a;b++)
System.out.print('★');
System.out.println();
}
}
}
改为:public class for15
{
public static void main(String[] args){
for(int a=1;a <=5;a++)
for(int b=1;b <=a;b++) {
System.out.print('★');
System.out.println();
}
}
} 那么结果就变为:
★
★
★
★
★
★
★
★
★
★
同是注意下绿色字的缩进排版,是有讲究的!
public static void main(String[] args){
for(int a=1;a <=5;a++){
for(int b=1;b <=a;b++)//当这个循环没有大括号括起来的时候,它只控制后面一行,也就是打五角星的那一行
System.out.print('★');
System.out.println();
}
}
}
下面这个清晰点,老师因该教过,新手写代码最好书写规范,要不自己都会看不懂.
public class for15{
public static void main(String[] args){
for(int a=1;a <=5;a++){
for(int b=1;b <=a;b{
System.out.print('★');
}
System.out.println();
}
}
}
public static void main(String[] args){
for(int a=1;a <=5;a++){
for(int b=1;b <=a;b{ //第4行
System.out.print('★');
} //第6行
System.out.println();
}
}
} 程序到了第6行,不是直接往下走,而是直接跳回第4行重新执行循环?有原因吗?
public class for15{
public static void main(String[] args){
for(int a=1;a <=5;a++){
for(int b=1;b <=a;b++)
System.out.print('★');
System.out.println();
}
}
}首先,作为一个新手学习java,需要将代码格式化,不仅仅是为了自己方便,
也是为了增加程序的可读性,如上面的例子。
再就是如何解释上面的代码:
for循环是这样来划分的
for(int i = 0; i< 6; i++){
代码
}
如果没有{}来划分,那么for循环执行的是下面的语句
例子中是
for(int b=1;b <=a;b++)
System.out.print('★');
也就是说 for(int a=1;a <=5;a++){}控制的是几行
for(int b=1;b <=a;b++)
System.out.print('★');
控制的事每行输出多少个★
还有第2个for,是b<a,取决于第1个for的次数。
所以是第N行的话,就print N次,但是第2个for不换行。
这样应该清楚了吧?
{
public static void main(String[] args)
{
for(int a=1;a <=5;a++)
{
for(int b=1;b <=a;b++)
{
System.out.print('★');
System.out.println();
}
}
}
}这样是不是会明的了?
外层+内层画就OK了。
看到大家都这么热心,我已经看到我的希望了。