分支结构 Switch-Case使用
- 格式
switch(){
case 常量1:
执行语句1;
//break;
case 常量2;
执行语句2;
//break;
.
.
.
default:
执行语句n;
//break;
}
说明:根据switch表达式中的值,依次匹配个case中的常量。一旦匹配成功,则进入相应的case结构,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他擦色结构中的执行语句,直到遇到break关键字或此switch结构终止。
② break,可以使用在switch-case结构中,一旦执行就跳出swtich表达式
③ switch结构中的表达式,只能是一下六种:byte、short、int、char、枚举类型、String类型
String season = “summer”;
switch (season) {
case “spring”:
System.out.println(“春暖花开”);
break;
case “summer”:
System.out.println(“夏日炎炎”);
break;
case “autumn”:
System.out.println(“秋高气爽”);
case “winter”:
System.out.println(“白雪皑皑”);
break;
default:
System.out.println(“输入错误”);
break;
}
④case关键字只能声明常量,不能划定范围
⑤break关键字是可选的
⑥default:是可选的,相当于if-else 中最后的else。
例题①
class Test2{
public static void main(String[] args){
int score = 99;
switch(score / 10){
case 10 :
case 9 :
case 8 :
case 7 :
case 6 :
System.out.println("及格");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
System.out.println("不及格");
break;
}
}
}
从键盘输入月份和日期,输出这天是这一年的第一天
import java.util.Scanner;
class MonthDay{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("输入Month");
int month = scan.nextInt();
System.out.println("输入Day");
int day = scan.nextInt();
int sumday = 0 ;
switch(month){
case 12:
sumday += 30;
case 11:
sumday += 31;
case 10:
sumday += 30;
case 9:
sumday += 31;
case 8:
sumday += 31;
case 7:
sumday += 30;
case 6:
sumday += 31;
case 5:
sumday += 30;
case 4:
sumday += 31;
case 3:
sumday += 28;
case 2:
sumday += 31;
case 1:
sumday += day;
System.out.println("这一年的第"+sumday+"天");
}
}
}
说明:
- :凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立
- :可以使用if-else和switch-case都可以使用时,优先switch-case,效率较高。
循环结构
for循环
white循环
do-white循环
for循环
- 初始化
- 循环条件----à一定是boolean类型
- 循环体
- 迭代部分
for(①;②;④){
}
遍历100以内的偶数,并且统计偶数的数量,所有偶数的和;
class ForTest{
public static void main(String[] args){
/*
for(int i = 1;i < 5; i++){
System.out.println("a");
}
*/
//便利100以内的偶数
int sum = 0;
int count = 0;
for(int i = 1;i <= 100;i++){
if((i % 2 ) == 0){
System.out.println(i);
sum +=i;
count++;
}
}
System.out.println(count);
System.out.println(sum);
}
}
求两个数的最大公约数和最小公倍数
import java.util.Scanner;
class ForTest2{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个正整数");
int m = scan.nextInt();
System.out.println("请输入第二个正整数");
int n = scan.nextInt();
//获取最大公约数
//获取两个中较小的
int min = (m <= n)? m : n ;
for(int i = min;i >=1 ;i --){
if(m % i == 0 && n % i ==0){
System.out.println(i);
break;
}
}
//最小公倍数
int max = (m >= n )? m : n;
for(int i = max ;i <= m*n;i ++){
if(i % n ==0 && i % m ==0){
System.out.println(i);
break;
}
}
}
}
white循环
-
- white(②){
③
}
说明:①写while不能丢了循环条件
②写程序要避免死循环
③for和while可以相互转换
for和while的初始化条件的作用范围不同
int i= 1;
while(i <= 100){
if(I % 2 == 0){
System.out.println(i);
}
i ++
}
do-while循环
①do-while循环至少会执行一次循环体
do{
if(num % 2 == 0){
System.out.println(num);
}
num++;
}while(num <= 100);
循环语句综合例题
从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0是结束程序。
import java.util.Scanner;
class while{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int pos = 0;
int neg = 0;
while(true){
int number = scan.nextInt();
if(number > 0){
pos++;
}else if(number < 0){
neg++;
}else{
break;
}
}
System.out.println(pos);
System.out.println(neg);
}
}