JAVA笔记2.逻辑控制(程序的执行流程)

JAVA笔记2.逻辑控制(程序的执行流程),第1张

JAVA笔记2.逻辑控制(程序的执行流程) 1.顺序结构

*顺序结构比较简单,就是按照代码书写的顺序一行一行执行。
*单线程下一定按照代码顺序执行,多线程则不一定。

2.分支结构

2.1if语句
例1:判断一个年份是否为闰年

public static void main(String[] args) {
  int a=2000;
        if(a%100==0){
            //判断是否为世纪闰年
            if(a%400==0){
                System.out.println(a+"是世纪闰年");
            }else{
                System.out.println(a+"不是闰年");
            }
        }else{
            //普通闰年
            if((a%4)==0){
                System.out.println(a+"是普通闰年");
            }else{
                System.out.println(a+"不是闰年");
            }
        }
    }

例2:判断一个数字是正数还是负数

 public static void main(String[] args) {
        int a = 2000;
        if (a > 0) {
            System.out.println(a + "是正数");
        } else if (a < 0) {
            System.out.println(a + "是负数");
        } else {
            System.out.println(a + "是0");
        }
    }

注意:
1.(悬垂else问题)if/else语句中可以不加大括号,但是也可以写语句(只能写一条语句),此时else遵循就近原则,会和最接近的if匹配。
2.(分号问题)此处在if条件语句后多写了一个分号,导致分号成为了if语句的语句体,而{}中的1代码已经成为了和if无关的代码块,所以不满足a==20的条件,程序依然会输出haha

2.2switch语句(可以和if/else语句互换)
例:根据day的值输出星期

public static void main(String[] args) {
        int day=4;
        switch (day){
            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;
        }
    }

注意:
1.switch语句在每一个case后面一定要加上break;表示终止。若没有break;终止,当switch碰到满足条件的分支后,会一直执行到switch最后。
2.如果switch中的值没有匹配的case,就会执行default中的语句。建议switch语句最好都要带上default.
3.switch中的值只能是整数、枚举、字符、字符串
4.switch不能表达复杂的条件
5.switch虽然支持嵌套,但是不推荐,switch的使用局限性是比较大的。

3.循环结构(代码中的内容可能会执行多次)

3.1while循环
1)基本语法格式:
while(循环条件){
循环语句;
}
当循环条件为真时,则执行循环语句,否则循环结束。
例1:计算1-100的和

public static void main(String[] args) {
        int a=1;
        int sum=0;
        while(a<=100){
           sum+=a;
           a++;
        }
        System.out.println(sum);
    }
    //sum=5050

例2:计算1!+2!+3!+4!+5!

  public static void main(String[] args) {
        int num=5;
        int result=0;
        //1!+2!+3!+..+5!
        while (num>=1) {
        //具体的阶乘数 1!。。。。5!
        int temp=1;
        int tempResult=1;
        while (temp<=num){
            tempResult*=temp;
            temp++;
        }
        num--;
        result+=tempResult;
        }
        System.out.println(result);
    }

由例2我们可以发现,当一段代码中带有多重循环时。代码的复杂程度就大大提高了,比较复杂的代码容易出现错误,所以后面我们采用方法来解决这个问题。

3.2break
break的功能是让循环提前结束,表示跳出本次循环,循环终止。当有多层循环嵌套是,break采用就近原则。
例:找到100-200中的第一个3的倍数

   public static void main(String[] args) {
        int num=100;
        while (num<=200){
            if(num%3==0){
                System.out.println("找到了3的倍数为:"+num);
              break;//执行到break就会让循环结束
            }
            num++;
        }
    }
    //输出为  找到了的倍数为:102

3.3continue
continue的功能是跳过这次循环,立即进入下次循环。
若需要结束当下循环,使用continue表示继续执行下一次循环。

例:找到100-200中所有3的倍数

 public static void main(String[] args) {
        int num=100;
        while (num<=200){
            if(num%3!=0){
              num++;//不能忘记,否则会死循环
              continue;
            }
            System.out.println("找到了3的倍数为:"+num);
            num++;
        }
    }

执行到continue语句的时候,就会立刻进入下一次循环(判定循环条件),从而不会执行到下方的打印语句。
3.4for循环
1)基本语法:
for(循环开始条件;循环终止条件;循环继续声明){
循环体;
}
2)for循环和while循环最大的区别:
while循环常用于不知道循环次数的情况;
for循环常用于知道循环次数的情况。
例:计算1!+2!+3!+4!+5!

 public static void main(String[] args) {
       int sum=0;
       //表示当前进行的是哪一个数的阶乘
       for(int i=1;i<=5;i++){
           int temp=1;
           //实际进行阶乘操作
          for (int j=1;j<=i;j++){
              temp*=j;
          }
        sum+=temp;
       }
        System.out.println(sum);
    }


3.5 do while循环(了解)
基本语法:(先执行循环语句,再判定循环条件)
do{
循环语句;
}while(循环条件);
与while循环的区别:无论条件是否满足,do{}先执行一次
注意:do while循环最后的分号不能忘记;一般do while很少用到,不推荐使用。

4.输入输出

输出:常用System.out,println()

输入:常用JDK提供的Scanner类读取字符串/整数/浮点数

例:

public static void main(String[] args) {
     //声明一个输入类的对象
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入年龄:");
        int age=scanner.nextInt();
        System.out.println("请输入姓名:");
        //读取字符串,next()
        String name=scanner.next();
        System.out.println("请输入月薪:");
        double sal= scanner.nextDouble();
        System.out.println("姓名为:"+name+",年龄为:"+age+",薪资为:"+sal);
        scanner.close();//关闭方法
    }


注意:当循环输入多个数据时,使用ctrl+z(windows上)来结束输入。

5.猜数字游戏

1.生成1-100之间的随机数(使用Random类)

  public static void main(String[] args) {
        Random random=new Random();
        int randomNum= random.nextInt(100);
        System.out.println(randomNum);
    }

2.系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 “低了”, 如果输入的数字比该随机数大, 提示 “高了” , 如果输入的数字和随机数相等, 则提示 “猜对了” .

 public static void main(String[] args) {
        Random random=new Random();
        int randomNum= random.nextInt(100);
       Scanner sc=new Scanner(System.in);
       int toGuess=randomNum;
       while (true){
           System.out.println("请输入你猜测的数字(1-100):");
           int num= sc.nextInt();
           if(num>toGuess){
               System.out.println("高了");
           }else if(num					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5717632.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存