循环:
概述:就是重复做同样的一件事情。
组成:
初始化条件:看从什么时候开始循环。一般定义的是一个变量。
判断条件:看在什么情况下才执行循环。
控制条件:控制初始化条件的改变的。(控制变量的变化的)
循环体:要重复做的事情。
分类:
for:
格式:
for(初始化条件1;判断条件2;控制条件3)
{
循环体4;
}
执行顺序:
先走初始化条件,然后走判断条件,
如果结果为true,然后走循环体,然后控制条件,然后走判断条件。
如果结果是false,for循环结束。
第一次;
1,2(true),4,3
第二次:
2,4,3。。。。
作业:
把1-10之间的整数依次打印。
for(int x =1;x<=10;x++)
{
System.out.println(x);
}
改需求:
求1-10之间的所有整数和。
思路:
1、应该获取到1-10之间的所有整数。用for可以实现。
2、在for循环上边,定义一个统计变量记录他们的累加和。
int sum = 0;
for(int x =1;x<=10;x++)
{
sum = sum + x;
//sum+=x;
}
System.out.println(sum);
什么时候定义变量?
当一个值是不断发生变化的时候。
怎么定义?
先在小范围内定义,如果不合适,就在大范围内定义。
定义变量的注意事项;
1、先在小范围内定义,然后在大范围内定义,可以的。
因为小范围内的代码执行完毕后,小范围内的变量被内存给释放掉了。
2、先在大范围内定义,然后在小范围定义,不可以?
因为大范围内的变量没有被内存给释放掉。
while
格式:
初始化条件;
while(判断条件)
{
循环体;
控制条件;
}
注意:在某些情况下,while循环是可以和for循环互换的。
什么时候用for,什么时候用while?
当范围明确的时候,用for。效率高。
当范围不明确的时候,最好用while。
练习题:
求1-100之间的整数和。
先用for做,然后用while做。
我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.01米。
请问,我折叠多少次,可以折成珠穆朗玛峰的高度(用for循环做)
中午作业:
如果你刚才是用while写的,中午思考一下,用for循环怎么改进?
do-while
格式:
初始化条件;
do
{
循环体;
控制条件;
}while(判断条件);
do-while循环和while,for循环的区别:
do-while循环不管判断条件是否成立,至少执行一次。
其他两个循环,判断条件不成,循环不执行。
求1-100之间(不含100)的偶数和(用for)
for:要求掌握。
while:改进
do-while:尝试一下。
循环的嵌套适用:
概述:循环语句的循环体又是一个新的循环语句。
输出语句:
System.out.print(); // 不换行
System.out.println(); //会自动换行。
循环嵌套的时候:
外循环控制:行。
内存换控制:列。
打印正,倒三角形怎么做:
正三角形:与打印长方形相比,内循环的判断条件发生变化。
倒三角形:与答应长方形相比,内循环的初始化条件发生变化。
转义字符:
\r:回车
\n:换行
\t:一个tab键位置
break和continue:
概述:他们是用来终止或者中断循环操作的。
break:终止本循环,循环结束。程序继续往下走。
continue:中断本次循环,进入下一次循环,循环不会终止。
注意事项:
1、他们都可以用于循环中,一般用在循环中的判断语句中。
2、break还可以用于switch-case语句中。
3、在一个循环体系中,他们一般放在末尾。
break和continue的区别?
首先,他们都可以用在循环中,break是用来终止本循环的,循环结束,程序会继续往下走。
而continue是用来中断本次循环,进入下一次循环的,循环不会终止。
break还可以用在switch-case语句中。
带标号的循环的终止:
双层循环,在内循环中写一个break,如何结束整个循环体系?
定义一个标号,然后用break或者continue结束到此标号即可。
格式:
名字:for(){}...
然后在想要结束的地方写上: break 名字;即可。
for(int x=0; x<=10; x++)
{
for(int y=0;y<10;y++)
{
break;
}
}
中午作业:
上午代码再练习一遍:
1、求1-10之间的整数和(for,while做)
2、求珠穆朗玛峰的高度问题。(for,while做)
3、求1-100之间的偶数和(for,while做)
int sum = 0;
for(int x =0;x<100;x+=2)
{
sum+=x;
/*if(x%2==0)
{
sum+=x;
}*/
}
System.out.println(sum);
有时间的话,可以尝试用do-while改进下这三个题。
思考题:
打印出所有的"水仙花数"。
所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
提示:
1:采用循环取得所有的三位数。(三位数指的是100-999之间的数)。
2:把每个三位数的个位,十位,百位进行分解。
153举例:
个位:153/1%10 = 3
十位:153/10^1%10 =5
百位:153/10^2%10 = 1
获取一个整数每一位值的方法:
整数/(10^权)%10
大白话:求什么位置的数值,就除以多少,然后跟10取余。
*****
*****
*****
*****
一次只能打印一个*,怎么做?
for(int x=0; x<4; x++)
{
for(int y=0; y<5; y++)
{
System.out.print("*");
}
System.out.println();
}
循环嵌套的时候:
外循环控制:行。
内循环控制:列。
*
**
***
****
*****
for(int x=0; x<5; x++)
{
for(int y=0; y<=x; y++)
{
System.out.print("*");
}
System.out.println();
}
*****
****
***
**
*
for(int x=0; x<5; x++)
{
for(int y=x; y<5; y++)
{
System.out.print("*");
}
System.out.println();
}
尝试打印九九乘法表:
1*1=1 1*2=2.。。。
2*1=2 2*2=4.。。。
for(int x=1; x<=9; x++)
{
for(int y=1; y<=9; y++)
{
System.out.print(y+"*"+x+"="+x*y+"\t");
}
System.out.println();
}
for(int x=0; x<=10; x++)
{
}
|
|