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(1100的和为:” + sum ) ; 
阶乘 
求  1 * 2 * 3 ** 10 =

for语句三个表达式特殊用法

表达式1位置内容为空时:

int sum = 0 ;
int i = 1;
for (  ; i <= 10 ; i + + ) {
    
    
	  sum += i ;
}
System.out.println(110的和为:” + sum ) ; 
表达式3位置内容为空时:
int  sum = 0 ;
for ( int i = 1 ; i <= 10 ; ) {
    
    
	  sum += i ;
	  i + + ;
}
System.out.println(110的和为:” + sum ) ; 
表达式 123 位置内容均为空时:

for (   ;   ;   ) {
    
    
	  System.out.println(“我要打王者……”);
}

死循环就产生了哈!!!

表达式 13 位置内容的多样化:
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);
	}	
}

好了,欢迎查看!!!关注一波,精彩在后!!!

猜你喜欢

转载自blog.csdn.net/weixin_43639180/article/details/117524301