Java学习第十八天

发布于:2023-02-03 ⋅ 阅读:(285) ⋅ 点赞:(0)

目录

一、switch分支结构

一、基本语法

 二、流程图

三、switch细节

四、switch和if的比较

二、 for 循环控制(!!!)

一、for四要素

 二、执行流程图

三、for循环语句细节

四、练习题(编程思想)


一、switch分支结构

在 java 中,只要是有值返回,就是一个表达式

一、基本语法

例子:

/*
请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
a 表示星期一,b 表示星期二 …
韩顺平学 循序渐进学 Java 零基础
第 106页
根据用户的输入显示相应的信息.要求使用 switch 语句完成
 */
import java.util.Scanner;
public class Switch01{
	//
	public static void main(String[] args){
		 Scanner myScanner = new Scanner(System.in);
		 System.out.println("请输入一个字符(a-g)");
		 char c1 = myScanner.next().charAt(0);
		 switch(c1){
		 	case 'a':
		 	System.out.println("今天是星期一");
		 	break;
		 	case 'b':
		 	System.out.println("今天是星期二");
		 	break;
		 	case 'c':
		 	System.out.println("今天是星期三");
		 	break;
		 	case 'd':
		 	System.out.println("今天是星期四");
		 	break;
		 	case 'e':
		 	System.out.println("今天是星期五");
		 	break;
		 	case 'f':
		 	System.out.println("今天是星期六");
		 	break;
		 	case 'g':
		 	System.out.println("今天是星期天");
		 	break;
		 	default:
		 	System.out.println("你输入的字符错误,找不到对应的日期");
		 	break;
		 }
		  

	}
}

 二、流程图

   如果没有break语句,下一步不进行判断,直接执行语句块

三、switch细节

1)表达式的数据类型要和后面常量类型一致,或者是可以相互转换的类型,如果表达式是String型,常量是char型,两者无法自动转换,编译就会报错

2)switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum(枚举),String)

3)case子句中的值必须是常量或者常量表达式,不能是变量,比如char c1 ='a',只能是case 'a',而不能是case c1 

4)default子句是可选的,当没有匹配的case时执行default子句,也可以没有default子句,则不输出

5)break代表跳出switch,结束这个switch,并不代表结束这个程序

  如果没有break语句,程序会执行到switch结尾(不会进行判断,直接输出)

作业心得对学生成绩大于 60 分的,输出"合格"。低于 60 分的,输出"不合格"。(注:输入的成绩不能大于 100),在做这道题时没有考虑到强制类型转换,直接将分数这个double型变量定义成了int型

int c1 = (int)(score/60);//涉及到编程思想

练习题根据月份判断季节,提示说可以使用switch里的穿透功能,由于理解错误,在写代码时出现了以下错误,

错误代码

case 3:
				System.out.println("您输入的3月份是春季");
				case 4:
				System.out.println("您输入的4月份是春季");
				case 5:
				System.out.println("您输入的5月份是春季");
				break;

导致输入3月就会三个语句全部都打印出来

正确代码

                case 3:
				case 4:
				case 5:
				System.out.println("您输入的月份是春季");
				break;

四、switch和if的比较

1) 如果 判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可以使用,建议使用 swtich 语句。(比如男女,星期,月份)
2) 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广

二、 for 循环控制(!!!)

非常重要

一、for四要素

: (1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代

 循环操作 , 这里可以有多条语句,也就是我们要循环执行的代码

当循环条件为假时,执行退出for循环的操作,程序还是会运行,并不是退出程序运行

 二、执行流程图

 


三、for循环语句细节

1) 循环条件是返回一个布尔值的表达式,比如for(int i=1;i<=10;i++)中i<=10,就是返回一个true或者false,
2) for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。

int i = 1;
		for(;i <= 10;){//如果把i=1写在此处,
			  			//i只能在循环语句内使用
			  			//循环条件还是在两个分号中间
			System.out.println("青锋所向便是乱世的对错"+i);
			i++;
		}
        System.out.println("i="+i);


3) 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。

int count = 3;
		for(int i1 = 0,j1 = 0; i1 < count; i1++,j1 += 2){
			System.out.println("i1=" + i1 + " j1=" + j1);
		}

ctrl+d退出死循环

四、练习题(编程思想)

编程思想:1.化繁为简,将复杂的问题简单化;2.先死后活 : 先考虑固定的值,然后转成可以灵活变化的值

练习题1

打印 1~100 之间所有是 9 的倍数的整数,统计个数及总和

代码如下

public class ForExercise{
	public static void main(String[] args){

		//1) 打印 1~100 之间所有是 9 的倍数的整数,统计个数及总和
		//思路:1.先输出1-100,2.输出1-100内的所有9的倍数
		//3.定义变量count,count++统计9的倍数出现的次数
		//4.定义变量sum,sum++统计9的倍数的和
		int count = 0;
		int sum = 0;
		for(int i=1; i<=100; i++){
			if(i % 9 == 0){
						
			System.out.println("i=" + i);//输出1-100范围内是9的倍数的整数
			count++;
			sum+=i;
			}//一定要加大括号,不然if分支控制只执行第一行语句
		}
			System.out.println("count=" + count);
			System.out.println("sum=" +sum);
	}
}

	

灵活运用:加入变量,可更改变量数据(打印 10~600 之间所有是 5 的倍数的整数,统计个数及总和)

public class ForExercise{
    public static void main(String[] args){
        int count = 0;
        int sum = 0;
        int start = 10;
        int end = 600;
        int t = 5;//10到600之间所有5的的倍数的整数,统计个数及总和
        for(int i = start; i<=end; i++){
            if(i % t == 0){
                        
            System.out.println("i=" + i);//输出1-100范围内是9的倍数的整数
            count++;
            sum+=i;
            }
        }
            System.out.println("count=" + count);
            System.out.println("sum=" +sum);
    }
}

也可以通过Scanner语句,通过键盘输入数据来运行程序,可以求任意整数区间内是任意整数的倍数的整数,以及其个数、和

import java.util.Scanner;
public class ForExercise{
	public static void main(String[] args){

		int count = 0;

		int sum = 0;

		Scanner sc = new Scanner(System.in);

		System.out.println("请输入计算的区间范围");

		int start = sc.nextInt();

		int end = sc.nextInt();

		System.out.println("输入要被整除的数");//没找到恰当的数据;

		int t = sc.nextInt();

		for(int i = start; i<=end; i++){

			if(i % t == 0){
						
			System.out.println("i=" + i);//输出1-100范围内是9的倍数的整数

			count++;

			sum+=i;
			}
		}
			System.out.println("count=" + count);

			System.out.println("sum=" +sum);
	}
}

	

完成此图片中表达式的输出

1)先用for循环输出0~5;

2)i+(5-i) = 5;//化繁为简

3)将5替换成n,则可灵活运用

public class ForExercise02{
	public static void main(String[] args){
		
		for(int i = 0; i <= 5; i++){
			System.out.println(i + "+" + (5-i) + "=" + 5 );
		}
	}		
}

定义变量n,可替换成任何整数;

Scanner语句

import java.util.Scanner;
public class ForExercise02{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入数字");
		int n = sc.nextInt();
		for(int i = 0; i <= n; i++){
			System.out.println(i + "+" + (n-i) + "=" + n );
		}
	}		
}
public class ForExercise02{
	public static void main(String[] args){
		int n = 10;
		for(int i = 0; i <= n; i++){
			System.out.println(i + "+" + (n-i) + "=" + n );
		}
	}		
}