循环结构概述
一、循环结构
概述
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
分类
for循环;
while循环;
for语句
for循环语法: for(初始化表达式语句;判断条件语句;控制条件语句){
循环体语句;
}
执行流程:
1、 执行初始化表达式语句;
2、 执行判断条件语句,返回值如果是true,就执行循环体语句;返回值如果是false,就结束循环;
3、 执行控制条件语句;
4、 回到2继续执行。
注意:初始化表达式语句只执行一次
案例一:
//输出HelloWorld十次
public class MyFor{
public static void main(String[] args ){
for (int i = 0;i < 10;i++){
System.out.println("HelloWorld");
}
}
}
案例二:
需求:请在控制台输出数据1-10
import java.util.Scanner;
public class MyFor2{
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
for(int i = 0;i < 10;i ++){
System.out.println("请输入第"+i+"个数字");
int num = sc.nextInt();
}
}
}
案例三:求1-10的和
public class MySum{
public static void main(Strinf args[]){
int sum;
for(int i = 1 ; i <= 10 ; i + + ){
sum += i; //sum = sum + i ; 的简写
}
}
}
案例四:求1-100之间偶数的和
方法一:
public class MySum2{
public static void main(String args[]){
int sum = 0;
for (int i = 1 ; i <= 100 ; i + +){
//对 i 取余判断是否是偶数,如果是偶数,就加到 sum 上
if(i % 2 == 0){
sum += i;
}
}
System.out.println("1-100之间偶数的和是:"+sum);
}
}
方法二:
public class MySum2{
public static void main(String args[]){
int sum = 0;
for (int i = 1 ; i <= 50 ; i + +){
sum = sum + 2 * i ; //自己构建偶数
}
System.out.println("1-100之间偶数的和是:"+sum);
}
}
案例五:判断一个数是否是水仙花数
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。153 = 111 + 555 + 333 = 1 + 125 + 27 = 153
public class NarcissisticNumbe{
public static void main(String args[]){
int totalNum = 0; //用来统计水仙花数的个数
for(int i = 100 ; i <= 1000 ; i + +){
//得到 i 百位,十位,和各位上的数
int a = i / 100 ;
int b = ( i - a * 100 ) / 10;
int c = i - a * 100 - b * 10;
//判断 i 是否为水仙花数,如果是,就输出它,并且总数自加 1
if ( a * a * a + b * b * b + c * c * c == i){
System.out.print(i+"、");
totalNum++;
}
}
System.out.prinln("水仙花数总共有"+totalNum+"个");
}
}
while 语句
语法:
while(判断条件语句){
循环体语句;
}
完整格式:
初始化条件语句;
while(判断条件语句){
循环体语句;
控制条件语句;
}
执行流程
a:执行初始化条件语句;
b:执行判断条件语句,看其返回值是true还是false,如果是true,就继续执行,如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续。
案例一:输出十次"HelloWorld"
public class MyWhile{
public static void main(String [] args){
int i = 0; //初始化条件语句
while(i < 10){ //判断条件语句
System.out.println("HelloWorld"); //循环体语句
i + +; //控制条件语句
}
}
}
案例二:统计水仙花数有多少个
public class MyWhile2{
public static void main(String[] args){
int i = 100; //初始化条件语句
int totalNum = 0; //用来统计个数
while(i < 1000){
//循环体语句
int a = i / 100 ;
int b = ( i - a * 100 ) / 10;
int c = i - a * 100 - b * 10;
if ( a * a * a + b * b * b + c * c * c == i){
totalNum++;
}
i + +; //控制条件语句
}
System.out.println("水仙花数的总数是:"+totalNum);
}
}
do…while 语句
语法:
do {
循环体语句;
}while(判断条件语句);
完整格式:
初始化条件语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
执行流程:
a:执行初始化条件语句;
b:执行循环体语句;
c:执行控制条件语句;
d:执行判断条件语句,看其返回值是true还是false,如果是true,就继续执行,如果是false,就结束循环
e:回到b继续。
案例:在控制台输出10次"HelloWorld"
public class MyDoWhile{
public static void main(String args[]){
int i = 0;
do{
System.out.println("HelloWorld");
i + + ;
}while(i < 10);
}
}
三种循环语句的区别
1、do…while 循环至少执行一次循环体,而for和while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
2、如果你想在循环结束后继续使用控制条件的那个变量,就使用while循环,否则就使用for循环。
3、建议优先考虑for循环,然后是while循环
死循环
一定要注意控制条件语句控制的那个变量,不要弄丢,否则很容易形成死循环。
两种简单的死循环格式:
1、while(true){……}
2、for(;;){……}
循环案例演示
需求:请输出一个4行5列的星星(*) 图 案。
如图:
*****
*****
*****
*****
public class Demo1{
public static void main(String[] args){
for(int i = 0 ; i < 4 ; i + + ){
for(int j = 0 ; j < 5 ; j + +){
System.out.print("*");
}
System.out.println();
}
}
}
需求:请输出下列的形状
*
**
***
****
*****
public class Demo2{
public static void main(String[] args){
for(int i = 0 ; i < 5 ; i + +){
for(int j = 0 ; j < i + 1 ; j + +){
System.out.print("*");
}
System.out.println();
}
}
}
需求:在控制台输出九九乘法表。
public class Demo3{
public static void main(String args[]){
for(int i = 1 ; i <= 9 ; i + +){
for(int j = 1 ; j < i + 1 ; j + +){
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println();
}
}
}
控制跳转语句
概述
前面我们已经说过了,Java中的goto是保留字,目前不能使用。虽然没有goto语句可以增强程序的安全性,但是也带来的很多不便。
比如说,我想在某个循环执行到某一步的时候就结束,现在就做不了这件事。
为了弥补这个缺陷,Java中提供了break,continue和return来实现控制语句的跳转和中断。
分类
break 中断
continue 继续
return 返回
break的使用
使用场景
1、在选择结构switch中
2、在循环语句中
离开使用场景的存在是没有意义的。
作用
1、退出单层循环
2、退出多层循环(几乎不用)
要想实现这个效果,就必须只掉一个东西:带标签的语句
格式: 标签名:语句
continue的使用
使用场景
循环语句中
作用
跳出一次循环,执行下一步操作
return 的使用
return就是退出一个方法。跳转到上层调用的方法。
总结:
return: 结束当前方法
break: 结束单层循环
continue: 结束当前循环,执行下一次循环
方法
方法就是完成特定功能的代码块,在很多语言中都有函数的定义,在Java中称之为方法。
语法:
修饰符 返回值类型 方法名 (参数类型 参数名1 ,参数类型 参数名2){
方法体;
return 返回值;
}
如何写好一个方法
两个明确:
1、返回值类型:明确功能结果的数据类型
2、参数列表:你要传递几个采纳数,分别是什么类型
案例:写一个方法,求两个数中的较大值
//这里只写了方法,不写类,一般来说方法是包含在类里面的
//修饰符 返回数据类型 方法名 (参数列表){}
public int compareTwo(int a,int b){
//假设较大值是a
int max = a ;
//如果a比b小,那么b值就是较大的值
if(a < b){
//把b值赋给max
max = b;
}
System.out.println("较大的数是:"+max);
}
注意事项
1、方法不调用不执行
2、方法与方法是平级关系,不能嵌套定义
3、方法定义的时候参数之间用逗号隔开
4、方法调用的时候不用再传递数据类型
5、如果方法有明确的返回值,一定要有return带回一个值
方法重载
在同一个类中,允许存在一个以上的同名方法,只要他们的参数列表不同,与返回值无关。
参数列表不同,可以是参数的个数不同,也可以是参数类型不同。