语句结构

1.数据输入

1.1 数据输入

1.2 Scanner使用的基本步骤

  1. 导包

    import java.util.Scanner;//导包的动作必须出现在类定义的上边
    
  2. 创建对象

    Scanner sc=new Scanner(System.in);//这个格式里面,只有sc是变量名可以变,其他都不允许变。
    
  3. 接收数据

int i=sc.nextInt();//这个格式里面,只有i是变量名,可以变,其他的都不允许变。

案例1:三个和尚

需求:一个寺庙里住着三个和尚,他们的身高必须经过测量得出(即身高未知),请用程序员实现获取这三个和尚的最高身高。

import java.util.Scanner;//导包
public class ThreeMonks {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);//创建对象
        System.out.println("请输入和尚1的身高值:");
        int height1=sc.nextInt();
        System.out.println("请输入和尚2的身高值:");
        int height2=sc.nextInt();
        System.out.println("请输入和尚3的身高值:");
        int height3=sc.nextInt();
        int tempHeight=height1>height2?height1 :height2 ;
        int maxHeight=tempHeight >height3 ?tempHeight :height3 ;
        System.out.println("三个和尚最高身高为:"+maxHeight +"cm");
    }
}

2.分支语句

2.1流程控制

分类:

  • 顺序结构
  • 分支结构(if,switch)
  • 循环结构(for,while,do…while)

2.2顺序结构

顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序依次执行,程序中大多数的代码都是这样执行的。

2.3 if语句

格式1:

if(关系表达式){
    语句体;
}

格式2:

if(关系表达式){
    语句体1;
}else{
    语句体2;
}

案例2:奇偶数

需求:任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出结果。

import java.util.Scanner;//导包
public class OddAndEvenNumber {
    public static void main(String[] args){
        //创建对象
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入数据:");
        //接收数据
        int num=sc.nextInt();
        if(num%2==0){
            System.out.println(num+"是偶数");
        }
        else{
            System.out.println(num+"是奇数");
        }
    }
}

格式3:

if(关系表达式1){
    语句体1;
}else if(关系表达式2){
    语句体2;
}
……
else{
    语句体n+1;
}

案例3:考试奖励

需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送给他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底会获得什么样的礼物,并在控制台输出。

95-100:一辆新自行车

90-94分:去游乐园玩

80-89分:一个变形金刚

80分以下:揍一顿

import java.util.Scanner;//导包
public class ExamReward {
    public static void main(String[] args){
        //创建数据
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入小明的得分:");
        //接收数据
        int score=sc.nextInt();
        System.out.println("小明获得的奖励是:");
        if(score>100||score<0){
            System.out.println("输入数据有误!!!");
        }else if(score>=95&&score<=100){
            System.out.println("一辆自行车");
        }else if(score>=90&&score<=94){
            System.out.println("去游乐园玩");
        }
        else if(score>=80&&score<=89){
            System.out.println("变形金刚");
        }else{
            System.out.println("揍一顿!");
        }
    }
}

数据测试

测试:正确数据,错误数据,边界数据

2.4 switch语句

格式:

switch(表达式){
    case 值1:
        语句体1;
        break;
    case 值2:
        语句体2;
        break;
        ……
            default:
        语句体n+1;
        [break;]
}

执行流程:

  1. 计算表达式的值
  2. 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,执行过程中遇到break结束。
  3. 如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后程序结束掉。
import java.util.Scanner;
public class SwitchDemo {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int week=sc.nextInt();
        switch(week){
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("输入错误值!!!");
                break;
        }
    }
}

案例4:春夏秋冬

需求:一年有12个月,分属春夏秋冬4个季节,键盘录入一个月份,请用程序实现判断该月份属于哪个季节,并输出结果。

春:3、4、5

夏:6、7、8

秋:9、10、11

冬:1、2、12

import java.util.Scanner;
public class Season {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入月份:");
        int season=sc.nextInt();
        switch(season){
            case 1:
                System.out.println("冬季");
                break;
            case 2:
                System.out.println("冬季");
                break;
            case 3:
                System.out.println("春季");
                break;
            case 4:
                System.out.println("春季");
                break;
            case 5:
                System.out.println("春季");
                break;
            case 6:
                System.out.println("夏季");
                break;
            case 7:
                System.out.println("夏季");
                break;
            case 8:
                System.out.println("夏季");
                break;
            case 9:
                System.out.println("秋季");
                break;
            case 10:
                System.out.println("秋季");
                break;
            case 11:
                System.out.println("秋季");
                break;
            case 12:
                System.out.println("冬季");
                break;
            default:
                System.out.println("输入了错误的月份!!!");
                break;

        }
    }
}
//case穿透
        switch(season){
        case 1:
        case 2:
        case 12:
            System.out.println("冬季");
            break;
        case 3:
        case 4:
        case 5:
            System.out.println("春季");
            break;
        case 6:
        case 7:
        case 8:
             System.out.println("夏季");
             break;
        case 9:
        case 10:
        case 11:
             System.out.println("秋季");
             break;
        default:
             System.out.println("输入了错误的月份!!!");
             break;
        }

注意事项:在switch语句中,如果case控制的语句体后面不写break,将会出现穿透现象,在不判断下一个case值得情况下,向下运行,直到遇到break,或者整体switch语句结束。

3.循环语句

3.1循环结构

特征:

  • 重复做某件事情
  • 具有明确的开始和停止标志

循环结构的组成:

  1. 初始化语句:用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样。
  2. 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去。
  3. 循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情。
  4. 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去。

循环结构对应的语法:

  1. 初始化语句:一条或多条语句,这些语句可以完成一些初始化操作。
  2. 条件判断语句:这里使用一个结果值为boolean类型的表达式,这个表达式能决定是否执行循环体,如a<3。
  3. 循环语句:这里可以是任意语句,这些语句将反复执行。
  4. 条件控制语句:这里通常是使用一条语句来改变变量的值,从而达到控制循环是否继续向下执行的效果,常见i++,i--这样的操作。

3.2 for循环语句

//格式
for(初始化语句;条件判断语句;条件控制语句){
    循环体语句;
}

案例5:输出数据

需求:在控制台输出1-5和5-1的数据

public class PrintNumber {
    public static void main(String[] args){
        for(int i=1;i<=5;i++){
            System.out.println(i);
        }
        for(int j=5;j>=1;j--){
            System.out.println(j);
        }
    }
}

案例6:求和

需求:求1-5之间的数据和,并把求和结果在控制台输出。

public class Summation {
    public static void main(String[] args){
        int sum=0;
        for(int i=1;i<=5;i++){
            sum+=i;
        }
        System.out.println("1~5之间的数据和为:"+sum);
    }
}

案例7:求偶数和

需求:求1-100之间的偶数和,并把求和结果在控制台输出。

//求1~100偶数和
int sum=0;
for(int j=1;j<=100;j++){
    if(j%2==0){
        sum+=j;
    }
}
System.out.println("1~100之间的偶数和为:"+sum);

案例8:水仙花数

需求:在控制台输出所有的水仙花数。

水仙花数:

  1. 是一个三位数
  2. 水仙花数的个位、十位、百位的数字立方和等于原数。
public class DaffodilsNumber {
    public static void main(String[] args){
        System.out.println("水仙花数有;");
        for(int i=100;i<=999;i++){
           int  a=i%10;
           int b=i/10%10;
           int c=i/100%10;
           if(a*a*a+b*b*b+c*c*c==i){
               System.out.println(i);
           }
        }
    }
}

案例9:统计水仙花个数

需求:统计水仙花数的个数,并输出水仙花个数。

//统计水仙花数的个数
int count=0;
for(int i=100;i<=999;i++){
   int  a=i%10;
   int b=i/10%10;
   int c=i/100%10;
   if(a*a*a+b*b*b+c*c*c==i){
       count++;
   }
}
System.out.println("水仙花数个数有:"+count+"个");

3.3while循环语句

//基本格式
while(条件判断语句){
    循环体语句;
}
//完整格式
初始化语句;
while(条件判断语句){
    循环体语句;
    条件控制语句;
}

案例10:珠穆朗玛峰

需求:世界上最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?

public class Qomolangma {
    public static void main(String[] args){
        double height=0.1;
        int count=0;
        while(height<=8844430){
            height*=2;
            count++;
        }
        System.out.println("折叠"+count+"次");
    }
}

3.4 do …while循环语句

//基本格式
do{
    循环体语句;
}while(条件判断语句);

//完整格式
初始化语句;
do{
    循环体语句;
    条件控制语句;
}while(条件判断语句);

3.5三种循环的区别

  • for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
  • do……while循环先执行依次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)

3.6 for和while的区别

  • 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能被再次访问到了
  • 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用。

4.跳转控制语句

continue:用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行。

break:用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环。

5.循环嵌套

//在控制台输出一天的24小时,每小时60分钟
public class HourMinute {
    public static void main(String[] args){
        for(int hour=0;hour<24;hour++){
            for( int minute=0;minute<60;minute++){
                System.out.println(hour+"时"+minute+"分");
            }
        }
    }
}

6.Random

Random的作用:用于获取一个随机数

使用步骤:

  1. 导包

    import java.util.Random;//导包的动作必须出现在类定义的上面
    
  2. 创建对象

    Random r=new Random();//这个格式里面,只有r是变量名可以变,其他的都不允许变
    
  3. 获取随机数

    int number=r.nextInt(10);//获取数据的范围:[0,10),包括0不包括10;
    //这个格式里面,只有number是变量名可以变,数字10可以变,其他的都不允许变
    
    //获取0~10内的一个随机数
    import java.util.Random;//导包
    public class RandomDemo {
        public static void main(String[] args){
            //创建对象
            Random r=new Random();
            //获取随机数
            int number=r.nextInt(10);
            System.out.println("Number:"+number);
        }
    }
    
    //获取10个随机数
    import java.util.Random;//导包
    public class RandomDemo {
        public static void main(String[] args){
            //创建对象
            Random r=new Random();
            for(int i=1;i<=10;i++){
                //获取随机数
                int number=r.nextInt(10);
                System.out.println("Number:"+number);
            }
        }
    }
    
     //获取一个1~100之间的随机数
    import java.util.Random;//导包
    public class RandomDemo {
        public static void main(String[] args){
            //创建对象
            Random r=new Random();
            //获取随机数
            int number=r.nextInt(100)+1;
            System.out.println("Number:"+number);
    
        }
    }
    

案例11:猜数字

需求:程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少?

当猜错的时候根据不同情况给出相应的提示:

  • 如果猜的数字比真实数字大,提示你猜的数据大了;
  • 如果猜的数字比真实数字小,提示你猜的数据小了;
  • 如果猜的数字与真实数字相等,提示恭喜你答对了;
import java.util.Scanner;//导包
import java.util.Random;
public class GuessNumber {
    public static void main(String[] args){
        //创建对象
        Scanner sc=new Scanner(System.in);
        Random r=new Random();
        int number=r.nextInt(100)+1;//获取数字
        System.out.println("猜猜我是谁?(1~100)");
        int getNumber=sc.nextInt();
        while(getNumber!=number) {
            if (getNumber > number) {
                System.out.println("你猜大啦!");
                getNumber = sc.nextInt();
            } else if (getNumber<number) {
                    System.out.println("你猜小啦!");
            getNumber = sc.nextInt();
            }
        }
        System.out.println("恭喜你猜中啦!");
    }
}
posted @ 2022-03-30 17:11  行雨  阅读(263)  评论(0编辑  收藏  举报