2-5程序流程控制

2-5程序流程控制

2020.9.13-092

  1. 顺序结构
  2. 分支结构:if…else; switch…case
  3. 循环结构

使用scanner从键盘获取int数据

/*
如何从键盘获取不同类型的变量:需要使用Scanner类
具体实现步骤:
1.导包: import java.util.Scanner;
2.Scanner的实例化:Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法,来获取指定类型的变量

注意:
需要根据相应的方法,来输入指定类型的值,如果输入的数据类型与要求的类型不匹配时会报异常InputMismatchException导致程序终止
*/
import java.util.Scanner;
class ScannerTest{
public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    
    System.out.println("请输入你的姓名:");
    String name = scan.next();
    System.out.println(name);
    
    System.out.println("请输入你的年龄:");
    int age = scan.nextInt();
    System.out.println(age);
    
    System.out.println("请输入你的体重:");
    double weight = scan.nextDouble();
    System.out.println(weight);
    
    System.out.println("你是否单身:");
    boolean islove = scan.nextBoolean();
    System.out.println(islove);
//char型的获取,Scanner没有提供相关的方法,只能获取一个字符串
    System.out.println("请输入你的性别:");
    String gender = scan.next();
    char genderChar = gender.charAt(0);//找到gender的第一个字符
    System.out.println(genderChar);
}
}

该看094.P96

/* 编写程序:由键盘输入三个整数分别存入变量num1,num2,num3,对他们进行排序,使用if-else,并且从小到大输出
*/
//if - else可以嵌套,else就近原则
import java.util.Scanner;
class IfTest2{
    public static void main(String[] args){
        Scanner scanner  = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        int num1 = scanner.nextInt();
        System.out.println("请输入第二个整数:");
        int num2 = scanner.nextInt();
        System.out.println("请输入第三个整数:");
        int num3 = scanner.nextInt();
        if (num1 > num2){
            if(num3 > num1){
                System.out.println(num2 + "," + num1 + "," + num3);
            }else if(num3 <= num2){
                System.out.println(num3 + "," + num2 + "," + num1);
            }else{
                if(num3 >= num2){
                    System.out.println(num1 + "," + num2 + "," + num3);
                }else if(num3 <= num1){
                    System.out.println(num3 + "," + num1 + "," + num2);
                }else{
                    System.out.println(num1 + "," + num3 + "," + num2);
                }
            }
        }                    
    }
}
import java.util.Scanner;
class IfExer1{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入你的身高:(CM)")int height = scan.nextInt();
        System.out.println("请输入你的财富:(千万)")double wealth = scan.nextDouble();
        System.out.println("请输入你是否帅:(true/false)")boolean isHandsome = scan.nextBoolean();
        /*方式2
        System.out.println("请输入你是否帅:(是/否)");
        String isHandsome = scan.next();
        if(height>=180 && wealth >= 1 && isHandsome.equals("是"))*/
        if(height>=180 && wealth >= 1 && isHandsome){
            System.out.println("very good!");
                
        }else if(height>=180 || wealth >= 1 || isHandsom){
            System.out.println("just good!");
        }else{
            System.out.println("no good!");
        }
        
    }
}

switch-case

1.凡是可以使用switc-case的结构,都可以转换为if-else,反之不成立

/*
格式:
switch(表达式){
case 常量1:
执行语句一;
//break;
case 常量2:
执行语句二;
//break;
...
default:
执行语句n;
//break;
}
*/
/*
1.根据switch表达式的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应的case结构中,调用其执行语句。调用完执行语句后则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾为止结束。
2.break,可以使用在此结构中,一旦执行到此关键字,就跳出switch-case结构
3.switch结构中的表达式,只能是如下6种类型之一:byte,short,char,int,枚举类型(JDK5.0新增),String类型(JDK7.0新增)
boolean,double不可以用
4.case后只能是常量
5.break关键字是可选的(可要可不要)
6.default:相当于if-else中的else,也是可选的。并且位置是灵活的
*/
class SwitchCaseTest{
    public static void main(String[] args){
        int number = 2;
        switch(number){
            case 0:
                System.out.println("zero");
                break;
            case 1:
                System.out.println("one");
                break;
            case 2:
                System.out.println("two");
                break;
            default:
                System.out.println("other");
                break;
        }
        System.out.println("no good!");
    }
}
/*
对学生成绩大于60分的,输出“合格”,低于60分的,输出“不合格”。
说明:
1.如果连续的case输出结果相同,可以合并(不写break)
*/
import java.util.Scanner;
class SwitchCaseTest1{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入你的成绩:");
            int score = scan.nextInt();
        /*if(scort>=60){
            System.out.println("if合格!");
                int m = 1;
        }else{
            System.out.println("if不合格");
                int m = 0;
        }
        //if这段没法用,m出不来
        */
        switch(score/60){
            case 0:
                System.out.println("switch不合格");
                break;
            case 1:
                System.out.println("switch合格");
                break;
        }
        
    }
}
/*
从键盘输入year年的month和day,要求通过程序输出输入的日期为2019年的第几天
没有对错误进行处理
*/
import java.util.Scanner;
class SwitchCaseTest2{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入year:");
        int year = scan.nextInt();
        System.out.println("请输入month:");
        int month = scan.nextInt();
        System.out.println("请输入day:");
        int day = scan.nextInt();
        /*switch(month){
            case 1:
                System.out.println("这是2019年的第"+day+"天");
            case 2:
                int d2=(month-1)*31+day;
                System.out.println("这是2019年的第"+d2+"天");
            case 3:
                int d2=(month-1)*31+day;
                System.out.println("这是2019年的第"+d2+"天");
            case 2:
                int d2=(month-1)*31+day;
                System.out.println("这是2019年的第"+d2+"天");
        }
        冗余
        */
        int sumDays=0;
        switch(month){
            case 12:
                sumDays += 30;
            case 11:
                sumDays += 31;
            case 10:
                sumDays += 30;
            case 9:
                sumDays += 31;
            case 8:
                sumDays += 31;
            case 7:
                sumDays += 30;
            case 6:
                sumDays += 31;
            case 5:
                sumDays += 30;
            case 4:
                sumDays += 31;
            case 3:
                if((year%4==0 && year%100 !=0)||(year%400==0)){
                    sumDays += 29;
                }else{
                    sumDays += 28;
                }
                
            case 2:
                sumDays += 31;
            case 1:
                sumDays += day;                            
        }
            System.out.println("这是"+year+"年"+month+"月的第"+sumDays+"天");
    }
}

循环结构

  • for
  • while
  • do-while

for循环的使用

1.循环结构四要素:

①初始化条件;②循环条件;🌂循环体;④迭代条件

2.for循环结构

for(①;②;④){

🌂

}

执行过程:①-②-🌂-④-②-🌂-④-… …-②

class ForTest{
    public static void main(String[] args){
        
        for(int i =1;i<=5;i++){
             System.out.println("hello world");
        }
    }
}
class ForTest1{
    public static void main(String[] args){
        
        for(int i =1;i<=150;i++){
             System.out.print(i + " ");
            if(i % 3 == 0){
                System.out.print("foo");
            }
            if(i % 5 == 0){
                System.out.print("biz");
            }
            if(i % 7 == 0){
                System.out.print("baz");
            }
            //换行
            System.out.println();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值