Java 第六章

第六章

for语法:
for(表达式①;表达式②;表达式③){
//④循环操作
}
表达式含义:
表达式1:赋值语句, 它用来给循环变量赋初值 例如:int i = 1;
表达式2:循环条件,一个关系表达式, 它决定什么时候退出循环 例如:i < 5;
表达式3:变量迭代 例如: i++
三个表达式均可省略,但分号不能省!!!!!

执行过程:
1.表达式1
2.判断表达式2,如果为true,执行循环操作,否则退出循环,第三步不执行
3.循环操作执行完毕后,执行表达式3(迭代部分),改变循环变量值
4.依次重复步骤2~3,直到退出循环
表达式2满足条件
if(表达式①;表达式②;④循环操作){
表达式③
}
执行流程:①---->②---->③---->④
--------------------------------------------------------------------------
注意事项:
for(;i<10;i++){
System.out.println("这是 "+i);
}
编译错误:
变量 i 没有初始化
--------------------------------------------------------------------------
for(int i=0;;i++){
System.out.println("这是 "+i);
}
编译正确,但是缺少
循环条件,造成死循环
--------------------------------------------------------------------------
for(int i=0;i<10;){
System.out.println("这是 "+i);

}
i++;
编译通过,但是循环变量的值无变化,
造成死循环
省略表达式3,在循环体内应设法改
变循环变量的值以结束循环
--------------------------------------------------------------------------
for(;;){
System.out.println("这是测试");
}
表达式全省略,无条件判断,循环变量无改变,
应在循环体内设法结束循环;否则会造成死循环
--------------------------------------------------------------------------

//break是结束整个循环体,continue是结束单次循环
比方说:
while(x++ < 10){
if(x == 3){
break;
}
System.out.println("值:" + x);
}
结果是输出 1 2 就退出了整个while循环

但是如果使用continue
while(x++ < 10){
if(x == 3){
continue;
}
System.out.println("值:"+ x);
}
结果是:1 2 4 5 6 7 8 9 10 可见他仅仅是不输出3,因为他结束了本次循环
当循环执行到break语句时,就退出整个循环,然后执行循环外的语句 改变程序控制流。
当循环语句执行到continue时,当次循环结束,重新开始下一轮循环。如果已经是最后一轮循环了,那么这是的continue就与break效果一样了。

到目前为止所学的循环结构有哪些?
语法区别:
while | do-while | for
while循环: | do{ | for(初始化;条件;迭代){
while(<条件>){ | //循环体 | //循环体
//循环体 | }while(<条件>); | }
| |
需要多次重复执行一个或多个任务的问题考虑使用循环来解决
无论哪一种循环结构,都有4个必不可少的部分:初始部分、循环条件、循环体、迭代部分

执行顺序:
while 循环:先判断,再执行
do-while循环:先执行,再判断
for循环:先判断,再执行

适用情况:
循环次数确定的情况,通常选用for循环
循环次数不确定的情况,通常选用while或do-while循环

for案例:
/**
*计算1到100的和
*/
public class Summation {

public static void main(String[] args) {
int sum = 0; //声明变量sum存放计算的和,赋初值为0
for(int i=1;i<=100;i++)
sum +=i;//等价于语句sum=sum+score
System.out.println("sum="+sum);
}

}


/**
* 使用for 循环
* 输入学生的5们功课,查询该学生的总成绩和平均分数
*/
import java.util.Scanner;

public class AverageScores {
public static void main(String[] args) {
int score; //声明一个变量,取名为score,用来接收学生的成绩值
int sum= 0; //声明一个变量,取名sum,用来存储学生的成绩和
double avg =0.0; //声明一个double类型的变量,用来接收计算出来的学生的平均分
Scanner sc = new Scanner(System.in); //获取键盘输入
System.out.println("请输入学生的姓名:");
String name = sc.next(); //将获取的输入赋值给一个String类型的name变量
int i= 0; //声明一个int类型的变量,赋初始值为0
for(;i<5;i++){ //循环5次录入成绩
System.out.println("请输入5门功课的第"+(i+1)+"门的成绩:");
score = sc.nextInt(); //录入成绩
sum += score; //等价于语句 sum=sum+score;
System.out.println(name+"的前"+(i+1)+"门功课的成绩和是:"+sum);
}
System.out.println(name+"的总成绩是:"+sum);
avg = sum/5; //计算平均成绩
System.out.println(name+"的平均分是:"+avg);

}

变量为汉字
/**
* 使用for 循环
* 输入学生的5们功课,查询该学生的总成绩和平均分数
*/
import java.util.Scanner;

public class 求学生的平均成绩 {
public static void main(String[] args) {
int 单科成绩;
int 总成绩= 0;
double 平均分 =0;
Scanner 键盘输入 = new Scanner(System.in);
System.out.println("请输入学生的姓名:");
String 学生姓名 = 键盘输入.next();
int i= 0;
for(;i<5;i++){
System.out.println("请输入5门功课的第"+(i+1)+"门的成绩:");
单科成绩 = 键盘输入.nextInt();
总成绩 += 单科成绩;
System.out.println(学生姓名+"的前"+(i+1)+"门功课的成绩和是:"+总成绩);
}
System.out.println(学生姓名+"的总成绩是:"+总成绩);
平均分 = 总成绩/5;
System.out.println(学生姓名+"的平均分是:"+平均分);
}
}

原文地址:https://www.cnblogs.com/chenyang520/p/7637356.html