java基础语法学习day05---初学者必看详解
1、循环结构
什么是循环
- 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性执行。
- 循环的要素:
- 循环体(相同或相似的语句)
- 循环条件(继续执行循环的条件,某些情况下循环条件以循环次数的方式体现)
1.1 while循环
while语句的执行逻辑
- 计算boolean表达式的值
- 如果值为true则执行语句块;语句块执行完后再次判断boolean表达式的值,如果为true则继续执行语句块;如此循环往复,直到boolean为false时退出while循环。
while语句的流程图
while语句用于处理循环逻辑
int age = 1;
while (age<=100) { System.out.println(“马上有钱”);
age++;
}
System.out.println(“over”);
使用break语句跳出循环
break用在循环体中用于退出循环
int x=0;
while ( x < 10 ) {
if ( x == 5 ) {
break;
}
System.out.println(x);
x ++ ;
}
练习:
- 程序随机生成并存储一个整数;
用户输入一个整数,程序给出与存储的数字“大”或“小”的比较结果提示;直到用户猜对数字为止;
如果中途,用户希望结束程序,可以输入0退出。
import java.util.Scanner;
public class NumberGuess {
public static void main(String[] args) {
//生成一个随机数作为猜测的结果
int num = (int) (Math.random() * 1000) + 1;
//第一次猜测
System.out.print("请输入你猜测的数字(1-1000),退出请按0:");
Scanner s = new Scanner(System.in);
int guest = s.nextInt();
//如果猜测错误,则继续
while (guest!=num) {
//输入为0,则退出循环;否则判断数字
if(guest == 0){
break;
} else if (guest > num) {
System.out.println("太大了!");
} else {
System.out.println("太小了!");
}
System.out.print("请输入你猜测的数字(1-1000),退出请按0:");
guest = s.nextInt();
}
//提示用户最终结果
if(guest == num) {
System.out.println("恭喜,你猜对了!");
}else{
System.out.println("真遗憾,下次再挑战吧!");
}
s.close();
}
}
1.2 do-while循环
do-while语句的执行逻辑
- 先执行语句块
- 再计算boolean表达式的值,如果为true,再次执行语句块,如此循环往复,直到boolean表达式的值为false为止。
do{
语句块
} while ( boolean表达式) ;
说明:无论boolean表达式是否为true,都先执行一次语句块;
do-while语句的流程图
do-while语句用于处理循环逻辑
int pwd ;
do{
System.out.print(“请输入密码”);
pwd = scanner.nextInt();
} while ( 123 != pwd) ;
while和do-while语句的区别
- while和do-while语句的区别:
- while循环先判断再执行;
- do-while循环先执行一次,再判断;
- 当初始情况不满足循环条件时,while循环一次都不会执行;do-while循环不管任何情况都至少执行一次。
while和do-while语句的不同仅仅会体现在第一次就不满足条件的循环中;如果不是这样的情况,while和do-while可以互换。
练习
- 程序随机生成并存储一个整数;
用户输入一个整数,程序给出与存储的数字“大”或“小”的比较结果提示;直到用户猜对数字为止;
如果中途,用户希望结束程序,可以输入0 退出
使用 do-while语句实现。
import java.util.Scanner;
public class NumberGuess02 {
public static void main(String[] args) {
//生成一个随机数作为猜测的结果
int num = (int) (Math.random() * 1000) + 1;
//准备输入
Scanner s = new Scanner(System.in);
int guest = -1;
do{
System.out.print("请输入你猜测的数字(1-1000),退出请按0:");
guest = s.nextInt();
//判断:输入0,则中止
if(guest == 0){
break;
} else if(guest > num) {
System.out.println("太大了!");
} else if(guest < num){
System.out.println("太小了!");
}
}while(guest!=num);
//提示用户最终结果
if(guest == num) {
System.out.println("恭喜,你猜对了!");
}else{
System.out.println("真遗憾,下次再挑战吧!");
}
s.close();
}
}
1.3 for循环
考虑如下循环问题的相同之处
- 计算从1加到100的值;
- 计算1+1/3+1/5+…+1/999;
- 找出从第1号学员到第500号学员中成绩大于90的学员。
…
i=1,2,…,100,每次循环累加i的值。
i=1,3,5,…,999,每次循环计算1/i,并累加。
i=1,2,…,500,每次循环判断第i号学员成绩是否大于90。
这样的变量 i 称之为循环变量;
在每次循环中,它规律的发生变化。同时,它也作为判断是否继续循环的条件。
for语句的执行逻辑
for (表达式1; 表达式2; 表达式3) {
语句块(循环体)
}
计算表达式1的值;
计算表达式2(表达式2为逻辑表达式)的值,如果为true则执行循环体,否则退出循环;
执行循环体;
执行表达式3;
计算表达式2,如果为true则执行循环体,否则退出循环;
如此循环往复,直到表达式2的值为false。
for语句的流程图
for语句用于实现固定次数循环
累加
求 1 + 2 +3 + … + 100 = ?
int sum = 0 ;
for ( int i = 1 ; i <= 100 ; i + + ) {
sum += i ;
}
System.out.println(“1到100的和为:” + sum ) ;
阶乘
求 1 * 2 * 3 * … * 10 = ?
for语句三个表达式特殊用法
表达式1位置内容为空时:
int sum = 0 ;
int i = 1;
for ( ; i <= 10 ; i + + ) {
sum += i ;
}
System.out.println(“1到10的和为:” + sum ) ;
表达式3位置内容为空时:
int sum = 0 ;
for ( int i = 1 ; i <= 10 ; ) {
sum += i ;
i + + ;
}
System.out.println(“1到10的和为:” + sum ) ;
表达式 1 ,2 ,3 位置内容均为空时:
for ( ; ; ) {
System.out.println(“我要打王者……”);
}
死循环就产生了哈!!!
表达式 1 和 3 位置内容的多样化:
for ( int i =1 , j = 6 ; i <= 6 ; i +=2 , j -=2 ) {
System.out.println(“ i , j = “ + i + “,” + j );
}
输出的结果是:
i , j = 1 , 6
i , j = 3 , 4
i , j = 5 , 2
for语句中的三个表达式中表达式1和表达式3可以使用逗号表达式,逗号表达式就是通过”,”运算符隔开的多个表达式组成的表达式,从左向右计算。
循环中使用break语句
break可用于循环语句或switch语句中;
break用于循环,可使程序终止循环而执行循环后面的语句,常常与条件语句一起使用。
int sum = 0;
for(int i=1; i<=100; i++) {
if(sum>=4000) {
break;
}
sum += i;
}
当总和大于等于4000时终止循环
循环中使用continue语句
continue只能用于循环中
其作用为跳过循环体中剩余语句而执行下一次循环
int sum = 0;
for(int i=1; i<=100; i++){
if( i % 10 == 3) {
continue;
}
sum += i;
}
统计总和时,跳过所有个位为3的
练习:随机加法运算器
- 程序依次出10道加法题目,由用户输入题目的答案;
用户每答完一道题,程序判断对错,并提示:“答对了”或“答错了”;
10道题目答完之后,系统计算得分并输出;
若用户希望提前结束,可以输入-1提前退出。
import java.util.Scanner;
public class AdditionTest {
public static void main(String[] args) {
System.out.println("将开始 10 次加法测试... ");
Scanner scanner = new Scanner(System.in);
//用于记载分数
int score = 0;
//构建 10 次循环
for (int i=1;i<=10;i++) {
//随机生成两个加数
int a = (int) (Math.random() * 100);
int b = (int) (Math.random() * 100);
int result = a + b;
//输出需要计算的加法表达式
System.out.println("(" + i + "). " + a + " + " + b + " = ?");
System.out.print("请输入答案(输入-1退出): ");
//读入结果
int answer = scanner.nextInt();
//判断对错
if(answer == -1){
break;
}else if (answer != result) {
System.out.println("Error!");
continue;
} else {
score += 10;
System.out.println("Correct!");
}
}
scanner.close();
System.out.println("此次测验结束,你的分数是:" + score);
}
}
好了,欢迎查看!!!关注一波,精彩在后!!!