(三)java流程控制语句

十三.Java API文档

Java类的组织形式:

JDK——>包——>接口,类,异常,枚举——>字段,构造器(构造方法),成员方法(方法)

十四.运算符

算数运算符,赋值运算符,关系运算符(比较运算符),逻辑运算符,位运算符,三元运算符。

  • 算数运算符

    复合赋值运算符会进行类型转换

     byte b = 3;
     b += 2;//等价b = (byte)(b + 2);
     b++;
    
  • 三元表达式

    int a = 10;
    int b = 99;
    int result = a < b ? a++ : b--;
    
    System.out.println(a); //11
    System.out.println(b); //99
    System.out.println(result); //10
    
    int a = 3;
    int b = 4;
    int c = a > b ? (int)1.1 :(int)3.4; //只能进行强制转换
    double d = a > b ? a : b + 3; //ok,满足int -> double
    
    int n1 = 55;
    int n2 = 33;
    int n3 = 44;
    
    int max1 = n1 > n2 ? n1 : n2;
    int max2 = n3 > max1 ? n3 : max1;
    System.out.println("三个数据=中的最大的数为:" +max2);
    
    int max3 = n3 > (n1 > n2 ? n1 : n2) ? n3 : (n1 > n2 ? n1 : n2);
    System.out.println("三个数据=中的最大的数为:" +max2);
    

    运算符的优先级

    https://img-blog.csdnimg.cn/3c34063d109548cfa9c53576e834a05b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzA2ODQ5,size_16,color_FFFFFF,t_70

标识符的命名规则和规范:

  1. 由26个英文字母大小写,0~9,_或¥组成
  2. 数字不可以开头。int 3ab = 1; //错误
  3. 不可以使用关键字或保留字,但包含关键字和保留字
  4. java中严格区分大小写,长度无限制。
  5. 标识符不能包含空格 int a b = 90; //报错
  • 包名:多单词组成时所有字母都小写:aaa.bbb.vvv
  • 类名.接口名:多单词组成时,所有单词的首字母大写
  • 变量名.方法名:多单词组成时,第一个单词首字母小写,第二个单词开始都是使用大写。
  • 常量名:所有字母都大写:多单词时每个单词用下划线连接:XXX_YYY_ZZZ;

原码,反码,补码

  • 计算机运算的的皇后,都是以补码的形式来运算
  • 在看结果的时候,要看它的原码
  • 二进制位是符号位,0表示正数,1表示负数
  • 正数三码合一(原码,补码,反码)
  • 负数的补码=反码+1,负数的反码=负数的补码-1
  • 负数的反码=原码符号位不变,其他位取反
  • 0的反码,补码都为0
  • java没有无符号数,java 中的数都是有符号的

十五.流程控制语句

if-else语句

​ 嵌套最好不要超过3层,不然代码的可读性比较差。

import java.util.Scanner;

public class demo11 {
    public static void main(String[] args) {

        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入年龄");

        int age = myScanner.nextInt();//键盘录入
        if (age > 18) {
            System.out.println("你的年龄大于18岁");
        } else {
            System.out.println("你的年龄小于等于18");
        }
        System.out.println("程序还在在继续执行");
    }

}
//求两个数量的最大和
package mypackage1;

import java.util.Scanner;

public class demo11 {
    public static void main(String[] args) {

        Scanner S = new Scanner(System.in);
        System.out.println("请输入两个double类型的变量:");

        double s1 = S.nextDouble();
        double s2 = S.nextDouble();

        if (s1 > s2){
            System.out.println("最大的数为:"+s1);
        }
        else {
            System.out.println("最大的数为:"+s2);
        }
    }

}
//输入一个分数,如果分数为100的时候,输出极好
//分数为(80,99]时,输出优秀
//分数为(60,80]时,输出一般
//其他的情况均输出不及格
package mypackage1;

import java.util.Scanner;

public class demo11 {
    public static void main(String[] args) {

        Scanner sss = new Scanner(System.in);
        System.out.println("请输入[0,100]的一个分数");

        double s1 = sss.nextDouble();
        if (s1 <= 100 || s1 >= 0) {
            if (s1 == 100) {
                System.out.println("极好");
            } else if (s1 > 80 && s1 <= 99) {
                System.out.println("优秀");
            } else if (s1 > 60 && s1 <= 80) {
                System.out.println("一般");
            } else {
                System.out.println("不及格");
            }
        } else {
            System.out.println("输入的您输入的数值错误,请重新输入");
        }
    }

}
//参加歌手比赛,如果初赛成绩大于8.0则进入决赛
//否则提示淘汰,并且要根据性别提示进入男子组和女子组
//输入成绩和性别,进行判断和输出信息
package mypackage1;

import java.util.Scanner;

public class demo11 {
    public static void main(String[] args) {

        Scanner sss = new Scanner(System.in);
        System.out.println("请输入歌手的成绩");

        double score = sss.nextDouble();
        if (score > 8.0) {
            System.out.println("请输入性别:");
            char sex = sss.next().charAt(0);//将字符串转换成字符
            if (sex == '男') {
                System.out.println("进入男子组");
            } else if (sex == '女') {
                System.out.println("进入女子组");
            } else {
                System.out.println("性别输入错误");
            }
        } else {
            System.out.println("你被淘汰");
        }
    }
    
}

switch语句

​ default类型可以写,没有匹配case的时候,执行default,如果没有default子句,则没有任何匹配,不做任何输出。

​ 如果没有写break的话,会直接从匹配的位置一直执行到程序的结尾(穿透)

​ switch(表达式)中表达式的返回值必须是:(byte,short,int,char,enum,String)

​ case中的值必须是常量,不能是变量。

//该程序可以接收一个字符,比如,a,b,c,d,e,f,a表示星期一,b表示星期二,以此类推。
package mypackage1;

import java.util.Scanner;

public class demo11 {
    public static void main(String[] args) {

        Scanner sss = new Scanner(System.in);
        System.out.println("请输入一个小写字符");

        char ccc = sss.next().charAt(0);
        switch (ccc) {
            case 'a':
                System.out.println("星期一");
                break;
            case 'b':
                System.out.println("星期二");
                break;
            case 'c':
                System.out.println("星期三");
                break;
            case 'd':
                System.out.println("星期四");
                break;
            case 'e':
                System.out.println("星期五");
                break;
            case 'f':
                System.out.println("星期六");
                break;
            case 'g':
                System.out.println("星期日");
                break;
            default:
                System.out.printf("输入的字符不正确");
                //break;//这里break没有必要写,因为已经在最后了,无论写不写都会跳出
        }
        System.out.println("退出了switch,继续执行程序");

    }
}

//输入一个成绩,输出是否合格 
Scanner sc1 = new Scanner(System.in);
        System.out.println("请输入一个成绩");
        
        double score = sc1.nextDouble();
        if (score <=100 && score >=0){
            switch ((int)(score/60)){
                case 1:
                    System.out.println("合格");
                    break;
                case 0:
                    System.out.println("不合格");
                    break;
            }
            
        }else{
            System.out.println("您输入的成绩要在[0,100]");
        }

        //输入月份,输出是哪个季节
        Scanner sc1 = new Scanner(System.in);
        System.out.println("请输入一个月份");

        int month = sc1.nextInt();
        switch (month){
            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;
            case 12:
            case 1:
            case 2:
                System.out.println("这是冬季");
                break;
            default:
                System.out.println("你输入的月份不对(1-12)");
        }

switch和if的比较:

  1. 如果判断的具体的数值不多,而且符合byte,short,int,char,enum,String这6种类型,虽然两个语句都可以使用,但是使用switch语句更好。
  2. 其他情况:对区间判断,结果为boolean类型判断,使用if,if的使用返回更广。
for循环控制
  • 循坏条件是返回一个布尔值的类型
int i = 1;
        for (;i<=10;){
            System.out.println(i);
            i++;
        }
for(;;){//无线循环
    System.out.println("ok");
}
//打印1~100之间所有是9的倍数的整数,统计个数,以及总和
        int k = 0;
        System.out.println("所有9的倍数如下:");
        for (int i =1;i <= 100;i++){
            if (i%9==0){
                System.out.println(i);
                k++;
            }
        }
        System.out.println("9的倍数的总数为:"+k);
while循环
//打印40~200之间的所有的偶数(while循环)
        int i = 40;
        System.out.println("40~100之间的所有偶数如下:");
        while (i <= 100){
            if(i%2==0){
                System.out.println(i);
            }
            i++;
        }
do…while循环
	int i = 1;
        int count = 0;

        System.out.println("1--200之间所有能被5整除但是不能被3整除的个数为:");
        do {
            if (i % 5 == 0 && i % 3 != 0) {
                count++;
            }
            i++;
        } while (i <= 200);
        System.out.println(count);
    //如果李四不换还钱,则张三就会说不行,知道李四说还钱为止

        Scanner lll = new Scanner(System.in);
        char answer = ' ';

        do {
            System.out.println("是否还钱,y/n");
            answer = lll.next().charAt(0);
            System.out.println("他的回答是:"+answer);
        }while (answer != 'y');

多重循环控制

​ for循环一般使用两层,最多都不要超过三层,不然代码的可读性很差。

 //统计三个班的成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分(学生的成绩从键盘键入)
        //统计三个班的及格人数,每个班有5名同学
        Scanner lll = new Scanner(System.in);
        double sum = 0;
        int count = 0;

        for (int i = 1; i <= 3; i++) {
            System.out.println("开始输入第" + i + "个班级的成绩");
            for (int j = 1; j <= 5; j++) {
                System.out.println("请输入第" + j + "名同学的成绩");
                double score = lll.nextDouble();
                sum += score;
                if (score >= 60) {
                    count++;
                }
            }
            System.out.println("第" + i + "个班级的平均分为:" + sum / 5);
        }
        System.out.println("所有班级的平均分为:" + sum / 15);
        System.out.println("所有班级成绩合格的人数为:" + count);

 //金字塔层数的问题
 		Scanner lll = new Scanner(System.in);

        System.out.println("请输入您要输入的金字塔的层数:");
        int num = lll.nextInt();
        for (int i = 1; i <= num; i++) {
            for (int j = 1; j <= num - i;j++ ){
                System.out.print(" ");
            }
            for (int k =1; k <= 2*i - 1 ;k++){
                System.out.print("*");
            }
            System.out.println();

        }
//空心金字塔问题
		canner lll = new Scanner(System.in);

        System.out.println("请输入您要输入的金字塔的层数:");
        int num = lll.nextInt();
        for (int i = 1; i <= num; i++) {
            for (int j = 1; j <= num - i; j++) {
                System.out.print(" ");
            }
            for (int k = 1; k <= 2 * i - 1; k++) {
                if (k == 1 || k == 2 * i - 1 || i == num) {
                    System.out.print("*");
                }else {
                    System.out.print(" ");
                }
            }
            System.out.println();

跳转控制语句

1.break语句,跳出循环

细节说明:

  • 可以通过标签指明要种终止的哪块代码块。
  • 在实际的开发过程中尽量不用使用标签(并且基本没人用)。
  • 如果没有指定break,默认退出最近的循环体。
  • break可以指定退出到哪一层。

2.contiune语句,跳出本次循环,继续执行之后的语句

3.return语句,如果return写在main方法中,则直接结束main方法。

//1~100以内的数求和,求出当第一次大于20的当前的数
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
            if (sum > 20){
                break;
            }
        }
        System.out.println("第一次大于20的数为:"+sum);
    }
//实现登录验证,有3次机会,如果用户名为”丁一“,密码为”666“提示登录成功,否则提示还有几次机会
        Scanner lll = new Scanner(System.in);
        String name = "";
        String passwd = "";

        for (int i = 1; i <= 3; i++) {
            System.out.println("请输入用户名:");
            name = lll.next();
            System.out.println("请输入密码:");
            passwd = lll.next();
            if(passwd == "666"){
                System.out.println("登录成功");
            }else {
                System.out.println("密码错误,您还有"+(3-i)+"次机会");
            }
        }
 //某人有100000元,每经过一次路口,需要缴费,规则如下:
        //当现金>50000时,每次缴5%
        //当现金<=500000时,每次缴1000;
        //计算该人可以经过多少次路口,要求:使用while完成
        double money = 100000;
        int count = 0;
        while (money >= 0) {
            if (money > 50000) {
                money *= 0.95;
                count++;
            } else if (money <= 50000 && money > 1000){
                money -= 1000;
                count++;
            }else {
                //System.out.println("你是个穷B,没钱了");
                break;
            }
        }
        System.out.println("这个人可以经过"+count+"次路口");
//经典水仙花,这题都做烂了
        Scanner lll = new Scanner(System.in);
        System.out.println("请输入一个三位数");

        int num = lll.nextInt();
        int a = num % 100;
        int b = num % 10 - a * 10;
        int c = num - a * 100 - b * 10;
        if (num >= 100 && num <= 999) {
            if (a * a * a + b * b * b + c * c * c == num) {
                System.out.println("满足水仙花");
            }else {
                System.out.println("不满足水仙花");
            }

        } else {
            System.out.println("您输入的数不正确!");
        }
//输出1-100之间的不能被5整除的数,每5个一行
        int i = 0;
        for (int j = 1; j <= 100; j++) {
            if (j % 5 != 0){
                System.out.print(j+" ");
                i++;
                if(i%5==0){
                    System.out.println("");
                }
            }

        }
//输出小写的a-z以及大写的Z-A
        System.out.println("小写字母为:");
        for(char c1 = 'a';c1 <= 'z';c1++){
            System.out.print(c1+" ");
        }
        System.out.println("");
        System.out.println("小写字母为:");
        for(char c2 = 'A';c2 <= 'Z';c2++){
            System.out.print(c2+" ");
        }
//求出1-1/2+1/3-1/4.....1/100的和
        double num1 = 0;
        double num2 = 0;
        double num = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) {
                num1 -= 1 / i;
            }
            if (i % 2 != 0) {
                num2 += 1 / i;
            }
        }
        num = num1 + num2;
        System.out.println(num);
//求1+(1+2)+(1+2+3)+....+(1+2+...100)的结果
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            for (int j = 1; j <= i; j++) {
                sum += j;
            }
        }
        System.out.println(sum);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值