JAVA基础 - 键盘录入与分支、循环结构案例

一、键盘录入

    public static void main(String[] args) {
        //案例:键盘录入技术
        //得到一个键盘扫描器对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的年龄:");
        //调用sc对象的功能等待接收用户输入的数据
        //这个代码会等待用户输入数据,直到用户输入完数据并按了回车键就会把数据拿到
        int age = sc.nextInt();
        System.out.println("您的年龄是:" + age);
        System.out.println("请输入您的名字");
        String name = sc.next();
        System.out.println("欢迎" + name);
        }

二、分支结构

1、if分支:根据判断的结果(真或假)决定执行某个分支的代码

public static void main(String[] args) {
        //分支结构,格式1:if(条件表达式){代码...}
        // 需求:心跳(60-100)之间是正常的,否则系统提示进一步检查
        int hearBeat = 30;
        if (hearBeat < 60 || hearBeat > 100) {
            System.out.println("系统检测到您的心跳有异常,请进一步检查,当前心跳系数为:" + hearBeat);
        }
        System.out.println("检查结束");
//分支结构,格式2:if(条件表达式){代码...} else{代码... //需求:发红包,有钱就发,没钱就不发 double money = 1000.11; if (money>=1314){ System.out.println("您的红包已发送"); } else { System.out.println("没钱就别发了"); }
//分支结构,格式3:if(条件表达式){代码...} elseif(条件表达式){代码...} else{代码...} //需求:绩效系统 0-60 C 60-80 B 80-90 A 90-100 A+ int score = 160; if(score>=90&&score<=100){ System.out.println("您的绩效为:A+"); } else if(score>=80&&score<90){ System.out.println("您的绩效为A"); } else if(score>=60&&score<80){ System.out.println("您的绩效为B"); } else if(score>=0&&score<60){ System.out.println("您的绩效为C"); } else { System.out.println("您的输入的成绩不在0-100范围内"); } }

2、switch

  if其实在功能上远远强大于switch,if适合做区间匹配,switch适合做 值匹配的分支选择、代码优雅

  switch分支注意事项:

  • 表达式类型只能是byte,short,int,char,jdk5开始支持枚举,jdk7开始支持string,不支持double,float,long
  • case给出的值不允许重复,且只能是字面量,不能是变量
  • 不要忘了写break,否则会出现穿透现象
public static void main(String[] args) {
        //switch(表达式){case值:执行代码}
        String week = "周二";
        switch (week){
            case "周一":
                System.out.println("一周的第一天");
                break;
            case "周二":
                System.out.println("今天周二啦");
                break;
            default:
                System.out.println("输入的不是周数据");
        }
}

3、switch的穿透性

  如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到breask才跳出分支,这就是switch的穿透性

三、循环结构

1、for循环

public static void main(String[] args) {
        //for循环,for(初始化语句;循环条件;迭代语句){循环体语句}
        //需求1:计算1-5的和
        int sum =0;
        for(int i=1;i<=5;i++){
            sum += i; //把数据加给自己,用+=,即sum=sum+i
        }
        System.out.println("1-5的和是"+sum);

        //需求2:求1-10的奇数之和,并把求和结果在控制台输出
        //分析:1、定义for循环使其能够依次访问到1-10的数;
        // 2、在for循环中,通过if筛选出奇数;
        // 3、在循环外定义一个整数变量sum来累加这些数据
        int count =0;
        for(int i=1;i<10;i++){
            if(i%2==1){
                count +=i;
            }
        }
        System.out.println("1-10的奇数之和是"+count);


        //需求3:找出水仙花数并输出(1、水仙花数是一个三位数;2、水仙花数的个位、十位、百位的数字立方和等于原数)
        //分析:1、定义一个for循环从100一直到999
        //2、每次访问到数据后,提取该数据的:个位、十位、百位数字
        //3、使用if判断:个位、十位、百位的数字立方和是否等于原数,等於则输出该数据
        count = 0;// 统计水仙花的个数
        for(int i=100;i<=999;i++){
            int ge = i % 10;//取余,比如157%10=15.7,取余即7
            int shi = i / 10 % 10; //比如157/10=15,15%10=1.5,最后取余为5
            int bai = i / 100;//比如157/100=1 (保留整数)
            if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i){
                System.out.print(i+"\t");//"\t"是空格特殊字符,注意如果要让输出内容在同一行,要把print的ln去掉
                //如果想知道水仙花数的个数,可以在循环外定义一个变量count用于记录水仙花数,每输出水仙花数时,让count++
                count ++;
            }
        }
        System.out.println();//换行
        System.out.println("水仙花的个数为"+count);
}

2、while循环

  使用规范:知道循环几次,使用for;不知道循环几次建议使用while

public static void main(String[] args) {
//需求1:珠穆朗玛高度是8848860,纸张厚度是0.1,折叠纸张直到不低于珠穆朗玛位置,求折叠几次(不知道循环多少次的时候用while)
        //3、定义一个变量用于记录纸张折叠的次数
        int countpeak = 0;
        //1、定义变量记录山峰的高度、纸张的百度
        double peakHeight = 8848860;//山峰高度
        double paperThickness = 0.1;//纸张厚度
        //2、定义一个while循环控制纸张进行折叠
        while (paperThickness<peakHeight){
            paperThickness *= 2;//每折叠一次,纸张厚度为原来的2倍
            countpeak ++;
        }
        System.out.println("折叠次数为"+countpeak);
        System.out.println("纸张最终的厚度"+paperThickness);
}

 

3、do-while循环

  先执行再判断循环条件

int i = 0;
do{
  System.out.println("hello");  
  i++;  
}while(i<3);

4、死循环、循环嵌套、break、continue

   死循环:一直循环的执行下去,如果没有干预不会停止下来

  嵌套循环:外部循环每循环一次,内部循环全部执行完一次。

  跳转控制语句介绍:

  • break:跳出并结束当前所在循环的执行(注意:只能用于结束所在循环,或者结束所在switch分支的执行)
  • continue:用于跳出当前循环的当前执行,进入下一次循环。(注意:只能在循环中进行使用)
public static void main(String[] args) {
//死循环需求:系统密码是520,请用户不断输入密码验证,验证不对输出密码错误,验证成功输出欢迎进入系统,并停止程序
        int okPassword = 520;//定义正确的密码
        Scanner scpa = new Scanner(System.in);
        while (true){   //定义死循环让用户不断输入密码
            System.out.println("请您输入正确的密码:");
            int password = scpa.nextInt();
            if(password==okPassword){
                System.out.println("登录成功了");
                break;
            }else {
                System.out.println("密码错误");
            }
        }

        //嵌套循环:5天,每天说3遍我要学习
        for(int i=0;i<=5;i++){
            for(int j=0;j<=3;j++){
                System.out.println("我要学习");
            }
        }
}

四、案例技术

1、Random的使用

public static void main(String[] args) {
//随机数类Random:生成0-10之间的随机数
        Random r = new Random();
        int data = r.nextInt(10);//0-9 不包含10(包前不包后)
        int number =r.nextInt(10)+1;//1-0,生成1-10之间的随机数
        int number1 = r.nextInt(27)+65;//生成65-91之间的随机数,减加法: 65-91转换成 (0-26)+65
        System.out.println("生成的随机数为:"+data);
        System.out.println("生成的随机数为:"+number);
}

 

2、猜数字游戏

public static void main(String[] args) {
//猜数字游戏
        Random num = new Random();
        int numdata = r.nextInt(100)+1;//随机生成一个数字1-100之间 (0-99)+1
        Scanner numsc = new Scanner(System.in);
        while (true){  //使用一个死循环让用户不断的去猜测,并给出提示
            System.out.println("请您输入猜测的数据(1-100):");
            int guessNumber = numsc.nextInt();
            if(guessNumber<numdata){
                System.out.println("您猜测的过小了");
            }else if(guessNumber>numdata){
                System.out.println("您猜测的过大了");
            }else {
                System.out.println("恭喜您猜中了");
                break;//直接跳出并结束当前死循环
            }
        }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章