JAVASE学习03(语法结构:判断、循环)

判断结构(if)

if 语句是一个结构,允许程序确定执行的路径。
Java 有几种类型的选择语句:单分支 if 语句、双分支 if-else 语句、嵌套 if 语句、多分支 if-else 语句、switch 语句和条件表达式。 单分支 if 语句是指当且仅当条件为 true 时执行一个动作。

单分支 if 语句的语法如下:

if (布尔表达式){
语句(组);
}

流程图为:

当指定条件为 true时单分支 if 语句执行一个操作。而当条件为 false时什么也不干。 但是,如果你希望在条件为 false 时也能执行一些动作,该怎么办呢?你可以使用双分支 if 语句。根据条件为 true 或 false, 双分支 if 语句可以指定不同的操作

双分支的if语句的语法如下:

if (布尔表达式){
布尔表达式为其时执行的语句(组);
} else{ 布尔表达式为假时执行的语句(组);
}
流程图为:
在这里插入图片描述

嵌套的 if语句和多分支 if-else 语句

if语句可以在另外一个 if语句中,形成嵌套的 if语句。if 或if-else 语句中的语句可以是任意合法的 Java语句,甚至可以是其他的if 或ifelse 语句。内层 if语句称为是嵌套在外层 if语句里的。内层 if语句还可以包含其他的 if 语句;事实上,对嵌套的深度没有限制。
基于知识点,我们接下来看看选择结构解决具体问题的代码实现:
在这里插入图片描述

class Class06{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);//创建Scanner对象,用于输入数据
        System.out.println("请输入a、b、c:");//提示用户输入数据abc
        double a=scanner.nextDouble();
        double b=scanner.nextDouble();
        double c=scanner.nextDouble();
        double delt=b*b-4*a*c;//计算delt判别式的值
        if(delt>0){//根据delt的值进行分类
            double x1=(-b+Math.sqrt(delt))/2*a;
            double x2=(-b-Math.sqrt(delt))/2*a;
            System.out.println(x1+":"+x2);
        }else if(delt==0){
            double x=(-b-Math.sqrt(delt))/2*a;
            System.out.println(x);
        }     else{
            System.out.println("无实数解!");
        }  
    }
}

运行结果为:在这里插入图片描述
在这里插入图片描述

class Class08{
    public static void main(String[] args){
        String[] s={"scissor","rock","paper"};
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入:");//提示用户输入数据
        int usr=scanner.nextInt();
        Random random=new Random();//创建一个任意数对象
        int com=random.nextInt(3);//输入[0,2)
        if(usr<0||usr>2){
            System.out.println("请输入0~2");
            return;
        }
        if(usr==com){
            System.out.println("用户是:"+s[usr]+",电脑是:"+s[com]+",平局");
        }else if(usr-com==0||usr-com==-2){
            System.out.println("用户是:"+s[usr]+",电脑是:"+s[com]+",用户胜");
        }
            else{
                 System.out.println("用户是:"+s[usr]+",电脑是:"+s[com]+",电脑胜");   
                }
        }
    }

运行结果为:
在这里插入图片描述
在这里插入图片描述

import java.util.Scanner;
class Demo05{
    public static void main(String[] args){
        Random random=new Random();
        int comNumber=random.nextInt(90)+10;
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个两位数:");//提示用户输入
        System.out.println(comNumber);
        int usrNumber=scanner.nextInt();
        if(usrNumber<10||usrNumber>99){
            System.out.println("输入数字错误!程序结束!");
            return;//结束当前函数
        }
        int comNumberA=comNumber/10;
        int comNumberB=comNumber%10;
        int usrNumberA=usrNumber/10;
        int usrNumberB=usrNumber%10;
        if(comNumber==usrNumber){
            System.out.println("奖金为10000美元!");
        }else if(comNumberA==usrNumberB&&comNumberB==usrNumberA){
            System.out.println("奖金为3000美元!");
        }     else if(comNumberA==usrNumberA||comNumberA==usrNumberB||
                      comNumberB==usrNumberA||comNumberB==usrNumberB){
                          System.out.println("奖金为1000美元!");
                }  else{
                    System.out.println("谢谢惠顾!");
                }  
        }
}

运行结果为:在这里插入图片描述

多分支结构(switch)

switch 语句基于变量或者表达式的值来执行语句。
有时候处理问题为了全面考虑所有的情况,需要使用嵌套的 if 语 句。过多地使用嵌套的 if 语句会使程序很难阅读。Java提供 switch 语句来有效地处理多重 条件的问题。
switch 语句遵从下述规则:
① switch 表达式必须能计算出一个 char、byte、short,int或者 String 型值,并且必 须总是要用括号括住。
② valuel,. . . ,valueN 必须与 switch 表 达 式 的 值 具 有 相 同 的 数 据 类 型。注意: valuel, valueN 都是常量表达式,也就是说这里的表达式是不能包含变量的,例如,不 允许出现 1+X。
③ 当 switch 表达式的值与 case 语句的值相匹配时,执行从该 case开始的语句,直到 遇到一个 break 语句或到达该switch 语句的结束。
④ 默认情况(default)是可选的,当没有一个给出的 case 与 switch 表达式匹配时, 用来执行该操作。
⑤ 关键字 break 是可选的。break 语句会立即终止 switch 语句
注意:不要忘记在需要的时候使用 break 语句。一旦匹配其中一个 case, 就从匹配的case 处开始执行,直到遇到 break 语句或到达 switch 语句的结束。

循环结构(while和do while和for)

while循环

while 循环在条件为真的情况下,重复地执行语句。
while 循环的语法如下 :
while( 循环继续条件) {
// 循环体 语句 ( 组);
}
流程图如下:
在这里插入图片描述
下面的题应用到了while循环,我们具体来解一下这两道题:
在这里插入图片描述

class Home12{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个十进制数:");//提示用户输入
        int num=scanner.nextInt();
        String str="";//创建一个空字符串
        while(true){
            int rest=num%16;
            if(rest<10){
                str=rest+str;
            }else{
                str=(char)(55+rest)+str;//转换为ASII码表中的A~F
            }
            num=num/16;
            if(num==0){
                break;
            }
        }
        System.out.println(str);
    }
}

运行结果为:
在这里插入图片描述
在这里插入图片描述

class Class14{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int number=scanner.nextInt();
        while(true){
            boolean flag=true;//结束
            for(int i=2;i<number;i++){
                if(number%i==0){
                    System.out.print(i+",");
                    number=number/i;
                    flag=false;//未结束
                    break;
                }    
            }
            if(flag){
                System.out.print(number+".");
                break;        }
        }
    }
}

运行结果为:
在这里插入图片描述

do-while循环

do-while 循环和 while 循环基本一样,不同的是它先执行循环体一次,然后判 断循环继续条件。 do-while 循环是 while 循环的变体。
它的语法如下: do{
// 循环体;
语句(组);
} while ( 循环继续条件);
流程图如下:
在这里插入图片描述
下面这题应用到了do-while循环,我们具体来解一下这道题:
在这里插入图片描述

class Home13{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("Enter an integer,the input ends if it is 0:");//提示用户输入
        int value=0;
        int total=0;
        int positives=0;
        int negatives=0;
        int sum=0;
        double average=0;
            do{
            value=scanner.nextInt();
            if(value>0){
                positives=positives+1;//正数个数加一
            }if(value<0){
                negatives=negatives+1;//负数个数加一
            }
            sum=sum+value;
            }while(value!=0);
            total=negatives+positives;
            average=(double)sum/total;
        System.out.println("The number of positives is"+positives);
        System.out.println("The number of negatives is"+negatives);
        System.out.println("The tatal is"+total);
        System.out.println("The average is"+average);
    }
}

运行结果为:
在这里插入图片描述

for循环

通常,for 循环的语法如下所示:
for (初始操作;循环继续条件;每次迭代后的操作) {
// 循环体;
语句(组); }
流程图如下:
在这里插入图片描述
下面的题应用到了while循环,我们具体来解一下这道几题:
在这里插入图片描述

class Class13{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入两个数:");//提示用户输入
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        int gcd=1;
        for(int i=2;i<=(b<a?b:a);i++){
            if(a%i==0 && b%i==0){
                gcd=i;
            }
        } 
           System.out.println(gcd);
    }
}

运行结果为:
在这里插入图片描述
在这里插入图片描述

    public static void main(String[] args){
        for(int i=1;i<=7;i++){
            for(int k=1;k<=7-i;k++){
                System.out.print("  ");
            }
            for(int j=-(i-1);j<=i-1;j++){
                System.out.print(Math.abs(j)+1+" ");
            }
            System.out.println();
        }
    }
}

运行结果为:
在这里插入图片描述
![](https://img-blog.csdnimg.cn/20190723182511332.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNTM3ODY1,size_16,color_FFFFFF,t_70

    public static void main(String[] args){
        double e=0;
        for(int i=0;i<=10000;i++){
            double multi=1;
            for(int j=1;j<=i;j++){
                multi*=j;
            }
            e+=1/multi;
        }
        System.out.println(e);
    }
}

运行结果为:
在这里插入图片描述
在这里插入图片描述

    public static void main(String[] args){
        for(int i=1;i<=8;i++){
            for(int k=1;k<=8-i;k++){
                System.out.print("    ");
            }
            for(int j=-(i-1);j<=i-1;j++){
                System.out.printf("%4.0f",Math.pow(2,i-1-Math.abs(j)));
            }
            System.out.println();
        }
    }
}

运行结果为:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值