黑马程序员技术交流社区
标题:
循环语句详解和使用
[打印本页]
作者:
because_rhD4E
时间:
2015-11-24 00:11
标题:
循环语句详解和使用
循环:
for:
格式:
for(初始化条件1; 判断条件2; 控制条件3) {
循环体4;
}
执行流程:
第一次:先走1,再走2,看2的结果是true还是false,
如果是true,执行4,完了以后执行3
如果是false:循环结束。
第二次:2,4,3
。。。。。
最后一次:2
while:
格式:
初始化条件1;
while( 判断条件2 ) {
循环体4;
控制条件3;
}
练习题:
求1-100之间的和。
do..while:
格式:
初始化条件1;
do {
循环体4;
控制条件3;
} while( 判断条件2 )
三种循环之间的区别:
for循环和其他两个循环的区别:
for循环(标准写法)执行结束后,初始化条件就不能用了。而其他两个循环可以。
实际开发中:能用for就用for,否则考虑使用while,do..while
do..while循环和其他两个循环的区别:
do..while循环的循环体至少执行一次,而其他两个循环是先判断,然后决定是否执行。
死循环:
for(;;) {
}
while(true){
}
控制跳转语句:
break;用于跳出循环,循环不在继续执行。 还可以用在switch语句中,用来终止swtich语句。
continue:只能用于循环中,用来结束本次循环,进行下一次循环,循环还会接着执行。
A:for(int i=1; i<=10; i++) {
for(int j=1; j<=5; j++) {
break A;
}
}
return:结束方法的。
循环的嵌套:
矩形星阵: 外循环控制的是行,内循环控制的是列。
正三角形星阵: 和打印矩形相比,判断条件发生改变。
倒三角形星阵: 和打印矩形相比,初始化条件发生改变。
面试题:打印九九乘法表:
转义符:
"\t" tab键(水平制表符)
"\r" 回车
"\n" 换行
"\"" 打印分号
"\'" 打印单引号
"\b" 回退
方法:
概述:具有特定功能的代码块。
作用:调高代码的复用性和编写效率。
格式:
修饰符 返回值的数据类型 方法名(数据类型 形参1,数据类型 形参2) {
方法体;
return 返回值;
}
定义一个方法的步骤:
1、分析返回值的数据类型
2、明确参数列表
方法的调用:
有具体返回值的方法的调用:
A:单独调用。 没有意义。
B:输出调用。 上课演示用
C:赋值调用。 推荐使用。
没有明确返回值的方法的调用:
只能单独调用。
注意:
1、return可以省略,对结果没有影响,因为系统会默认加上。
2、只能单独调用。
如果一个方法没有明确的返回值,返回值的数据类型可不可以不写?
不可以,必须写成void。(先这么记,不严谨,因为构造方法没有返回值类型)
方法的注意事项:
1、方法只有被调用才会执行。
2、方法不能嵌套定义。
3、多个形参之间用 逗号 隔开。
4、调用用方法的时候,不用在传 具体的数据类型。
5、如果方法有明确的返回值类型,那么,return必须带出一个值。
1、需求:键盘录入两个数据,返回两个数中的较大值
2、需求:键盘录入两个数据,比较两个数是否相等
方法重载:
1、同一个类中。
2、方法名相同。
3、参数列表不同
A:个数不同。
B:对应的数据类型不同
4、与返回值的数据类型无关。
概述:在同一个类中,出现方法名相同,参数列表不同(个数不同,对应的类型)的两个或以上方法时,称为方法重载。
练习题:
1、在控制台打印:1-10
2、如果改成10-1,怎么打印?
3、需求:求1-10之间数据之和。(累加)
思路:
1、定义一个统计变量,用来记录和。
2、通过遍历,获取1-10之间的数字。
3、累加即可。
int sum = 0;
for(int i=1; i<=10; i++) {
//sum = sum + i;
sum+=i;
}
4、思考:求1-100之间的偶数和,应该怎么做?
int sum = 0;
//第一种方式
for(int i=1; i<=100; i++) {
if(i%2==0) {
sum+=i;
}
}
//第二种方式
for(int i=2; i<=100; i+=2) {
sum+=i;
}
5、求1-100之间的奇数和,又应该怎么求呢?
6、求10所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
提示:
求个位: 除1,然后和10取余 153/1%10
求十位: 除10,然后和10取余 153/10%10
求百位:。。。。。。。。。
求万位:除以10000,然后和10取余 12345/10000%10
代码:
7、
需求:请输出一个4行5列的星星(*)图案。
*****
*****
*****
*****
for(int i=1; i<=4; i++) {
for(int j=1; j<=5; j++) {
System.out.print("*");
}
System.out.println();
}
第一行: *****
for(int j=1; j<=5; j++) {
System.out.print("*");
}
System.out.println();
第二行:*****
for(int j=1; j<=5; j++) {
System.out.print("*");
}
System.out.println();
第三行:*****
for(int j=1; j<=5; j++) {
System.out.print("*");
}
System.out.println();
第四行:*****
for(int j=1; j<=5; j++) {
System.out.print("*");
}
System.out.println();
矩形星阵: 外循环控制的是行,内循环控制的是列。
正三角形星阵: 和打印矩形相比,判断条件发生改变。
倒三角形星阵: 和打印矩形相比,初始化条件发生改变。
面试题:打印九九乘法表:
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8
for(int i=1; i<=9; i++) {
for(int j=1; j<=i; j++) {
System.out.print(j + "*" + i + "=" + i*j + "\t" );
}
System.out.println();
}
*
**
***
****
*****
for(int i=1; i<=5; i++) {
for(int j=1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
思路:
第一行:*
for(int j=1; j<=1; j++) {
System.out.print("*");
}
System.out.println();
第二行:**
for(int j=1; j<=2; j++) {
System.out.print("*");
}
System.out.println();
第三行:***
for(int j=1; j<=3; j++) {
System.out.print("*");
}
System.out.println();
第四行:****
for(int j=1; j<=4; j++) {
System.out.print("*");
}
System.out.println();
第五行:*****
for(int j=1; j<=5; j++) {
System.out.print("*");
}
System.out.println();
*****
****
***
**
*
for(int i=1; i<=5; i++) {
for(int j=i; j<=5; j++) {
System.out.print("*");
}
System.out.println();
}
思路:
第一行:*****
for(int j=1; j<=5; j++) {
System.out.print("*");
}
System.out.println();
第二行:****
for(int j=2; j<=5; j++) {
System.out.print("*");
}
System.out.println();
第三行:***
for(int j=3; j<=5; j++) {
System.out.print("*");
}
System.out.println();
第四行:**
for(int j=4; j<=5; j++) {
System.out.print("*");
}
System.out.println();
第五行:*
for(int j=5; j<=5; j++) {
System.out.print("*");
}
System.out.println();
作者:
知识就酱吃
时间:
2015-11-29 15:08
写的很详细,继续努力,加油
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2