Java学习第二天

本文介绍了Java中的算术、赋值、比较和逻辑运算符,详细讲解了Scanner类的使用方法,包括输入不同类型的数据。还讨论了Random类生成随机数的功能。此外,文章涵盖了if-else和switch-case控制语句的用法,并提供了相关示例代码。最后,给出了几道涉及这些概念的作业题目。
摘要由CSDN通过智能技术生成

目录

今日内容

运算符

算术运算符

赋值运算符

比较运算符

逻辑运算符

三目运算符

Scanner类

常用包

语法结构

常用方法

示例代码

注意事项

Random类

常用方法

示例代码

控制语句

if else 语句

示例代码

switch case 语句

示例代码

作业

第一道作业

第二道作业

第三道作业

第四道作业--拓展题



今日内容

  • 运算符

  • Scanner类

  • Random类

  • 控制语句

运算符

算术运算符

注意事项

1."+" 除了程序当中做相加运算,还可以进行字符串拼接(当字符串与其他数据类型连接的时候),输出的时候是没有"+"的。

2."/"与"%" 当运算符的两边有浮点数的时候是按照正常的数学运算的。

3.自增运算和自减运算是分为前置和后置的,a++先赋值后运算,++a是先运算后赋值。

示例代码

package DAY02;
​
public class Demo01 {
    public static void main(String[] args) {
        int a = 5;
        int b = 3;
        System.out.println(a / b);//2
        System.out.println(a % 2);//1
        //除法运算中 当两边有浮点数的时候是按照正常的数学运算的
        double a1 = 10.0;
        System.out.println(a1 / b);//3.3333333333333335
        System.out.println(a1 % b);//1.0
        //a++ 和 ++a
        //a++
        int c = a++;
        System.out.println("a++之后的值:" + a);
        System.out.println(c);
        //++a
        int d = ++a;
        System.out.println("a++之后的值:" + a);
        System.out.println(d);
        
    }
}
/*
运算结果:
1
1
3.3333333333333335
1.0
a++之后的值:6
5
a++之后的值:7
7
*/

赋值运算符

= : 做赋值运算 。 如: int a = 0; 输出 0

+=:做加后赋值 。 如: int a = 2 , a+=2; 输出 4

-=: 做减后赋值 。 如 :int a = 2 , a+=2; 输出 0

注意事项

byte a = 2 ;

a = a + 2;//此时会报错

小范围的数据类型+大范围的数据类型 ----> 大范围的数据类型

改良后

byte a = 2;

a += 2;

比较运算符

== 相等于 4==3 true

!= 不等于 4 != 3true

< > 小于大于 4<3 / 4>3 false/true

<= >= 小于等于 大于等于 4<=3 / 4>=3 false/true

备注: 比较运算符的结果是一个b

示例代码

public static void one(){
        // 比较运算
        int a = 4;
        int b = 3;
        System.out.println(a == b);//false
        System.out.println(a != b);//true
        System.out.println(a > b);//true
        System.out.println(a < b);//false
        System.out.println(a <= b);//false
        System.out.println(a ><= b);//true
    }

逻辑运算符

! 非 !true 结果 false

&& 短路与 false&&true 结果 false

|| 短路非 false||true 结果 true

算法实例

public static void two(){
        int a = 4,b = 3;
        //!
        System.out.println(a == b);//false
        System.out.println(!(a == b));//true
        //&
        System.out.println((a > b) & (a < b));//false
        //|
        System.out.println((a > b) | (a < b));//true
        //&&
        System.out.println((a > b) && (a < b));//false
        //||
        System.out.println((a > b) || (a < b));//true
    }

三目运算符

?:

语法结构

布尔表达式 ?条件为真结果值:条件为假结果值

当布尔表达式结果为真时,取问号后面的值

当布尔表达式结果为假时,取问号前面的值

    public static void four(){
        int a = 4,b =3;
        System.out.println(a > b ? a : b);// 4
        int c = a > b ? a : b;//c = 4;
    }

Scanner类

常用包

java.util 工具包

java.io IO包

java.text 文本包

java.time 时间包

java.lang 语言包 在使用时可以不导入生命

java,sql 数据库操作包

Scanner类 扫描功能 往程序当中录入信息

语法结构

1.引入到当前类中 import

import java.util.Scanner;

2.创建该类对象

Scanner scanner = new Scanner(Systeam.int);

3.调用对象当中的功能方法

scanner.方法名(参数值);

常用方法

  • next() 字符串(文本)

  • nextLine() 字符串(文本)

  • nexInt() 整数

  • nextLong() 长整型

  • nextDouble() 小数型

示例代码

package DAY02;
​
//Scanner类学习
//1.导入包
import java.util.Scanner;
public class Demo02 {
    public static void main(String[] args) {
        //2.创建Scanner对象
        Scanner scanner = new Scanner(System.in);
        //3.方法调用
        //往系统当中录入一个姓名
        System.out.println("请往系统当中录入一个姓名:");
        String inputText = scanner.next();
        System.out.println("录入的姓名为:" + inputText);
        //往系统当中录入一个人的年龄
        System.out.println("请输入一个年龄值:");
        int age = scanner.nextInt();
        System.out.println("录入的年龄值为:" + age);
        //往系统当中录入一个人的身高值
        System.out.println("请输入一个身高值");
        double heigeht = scanner.nextDouble();
        System.out.println("录入的身高值为:" + heigeht);
    }
}
/*
运行结果:
请往系统当中录入一个姓名:
张三
录入的姓名为:张三
请输入一个年龄值:
23
录入的年龄值为:23
请输入一个身高值
1.85
录入的身高值为:1.85
*/

注意事项

  • nextLine() 成行读取,并且带有换行

  • next() 输入空格 第一个值分配给当中的变量值,空格后面的值,会分配给后面的next()方法对应的变量值,空格后面的数量对应的是后面的输入变量

  • 对于nextLine() 方法,如果前面输入的有数值型,到nextLine() 方法会发生跳跃现象,解决办法就是:添加一个nextLine()

    package DAY02;
    ​
    //Scanner类学习
    //1.导入包
    import java.util.Scanner;
    public class Demo02 {
        public static void main(String[] args) {
            //2.创建Scanner对象
            Scanner scanner = new Scanner(System.in);
            //3.方法调用
            //往系统当中录入一个姓名
            System.out.println("请往系统当中录入一个姓名:");
            String inputText = scanner.next();
            System.out.println("录入的姓名为:" + inputText);
            //往系统当中录入一个人的年龄
            System.out.println("请输入一个年龄值:");
            int age = scanner.nextInt();
            System.out.println("录入的年龄值为:" + age);
            //往系统当中录入一个人的身高值
            System.out.println("请输入一个身高值");
            double heigeht = scanner.nextDouble();
            System.out.println("录入的身高值为:" + heigeht);
        }
    }
    /*
    运行结果:
    请往系统当中录入一个姓名:
    张三
    录入的姓名为:张三
    请输入一个年龄值:
    23
    录入的年龄值为:23
    请输入一个身高值
    1.85
    录入的身高值为:1.85
    */

Random类

它是一个随机类,当在程序当中随机一个整数或小数的时候可以使用此类、

使用步骤

1.导包声明 import java.util.random;

2.对象创建 Random random = new Random();

3.方法调用 random.方法名称(参数值);

常用方法

  • nextInt(bound) 随机一个整数 [0,bound)

  • nextDouble() 随机一个小数 [0.0,1.0]

示例代码
package DAY02;
​
//1 导包
import java.util.Random;
public class Demo03 {
    public static void main(String[] args) {
        //2 对象创建
        Random random = new Random();
        //3 随机一个[0,100)之间的整数
        int ranNum = random.nextInt(100);
        System.out.println("[0,100)之间的随机整数为:" + ranNum);
        //随机一个、[0.0,1.0)之间的小数
        double ranDecimal = random.nextDouble();
        System.out.println("[0.0,1.0)之间随机小数为:" + ranDecimal);
        //随机一个[2000,2023]之间的整数
        int ranyear = random.nextInt(24) + 2000;
        System.out.println("[2000,2023]之间随机整数为:" + ranyear);
        //随机一个[a,b]之间的整数 nextInt(b-a+1) + a;
    }
}
/*
运行结果:
[0,100)之间的随机整数为:68
[0.0,1.0)之间随机小数为:0.4641343110137104
[2000,2023]之间随机整数为:2002
*/

控制语句

条件控制语句

  • if else 语句

  • switch case 语句

if else 语句

  • 单支

  • 多支

  • 嵌套

示例代码
package DAY02;
​
//1 导包
import java.util.Random;
public class Demo03 {
    public static void main(String[] args) {
        //2 对象创建
        Random random = new Random();
        //3 随机一个[0,100)之间的整数
        int ranNum = random.nextInt(100);
        System.out.println("[0,100)之间的随机整数为:" + ranNum);
        //随机一个、[0.0,1.0)之间的小数
        double ranDecimal = random.nextDouble();
        System.out.println("[0.0,1.0)之间随机小数为:" + ranDecimal);
        //随机一个[2000,2023]之间的整数
        int ranyear = random.nextInt(24) + 2000;
        System.out.println("[2000,2023]之间随机整数为:" + ranyear);
        //随机一个[a,b]之间的整数 nextInt(b-a+1) + a;
    }
}
/*
运行结果:
[0,100)之间的随机整数为:68
[0.0,1.0)之间随机小数为:0.4641343110137104
[2000,2023]之间随机整数为:2002
*/

switch case 语句

  • switch(变量) 变量的类型:只能是整型/字符型/枚举/字符串

示例代码
package DAY02;

public class Demo05 {
    public static void main(String[] args) {
        /*
        语法结构
            switch(变量){
               case 变量值1:
                    执行语句块...
                    break;
               case 变量值1:
                    执行语句块...
                    break;
                ....
                default:
                    执行语句
                    break;
            }
           变量 : 类型只能是:只能是整型/字符型/枚举/字符串
           break : 终止语句 终止/打断/停止
           default : 除以上case情形以为=外所有值都归于default情形值,相当于if else 语句当中最后的else
         */

    }
}

作业

第一道作业

需求说明

模拟一个射击游戏的例子

现有的战斗人员包括两个重要信息:所持有的兵器和位置,所持有的兵器由用户输入,击中的位置

由用户输入。

如果使用子弹,并击中头部,提示“爆头,立即死亡”

如果使用子弹,并击中腹部,提示“受伤,血掉30,体力减 40

如果使用匕首,并击中头部,提示“受伤,血掉50,体力减 10

示例代码

public static void homework_01() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请选择使用的武器(子弹或者匕首)");
        String weapon = scanner.next();
        System.out.println("请选择击中位置(头部或者腹部)");
        String aim = scanner.next();
        if (weapon.equals("子弹")) {
            if (aim.equals("头部")) {
                System.out.println("爆头,立即死亡");
            } else if (aim.equals("腹部")) {
                System.out.println("受伤,血掉30,体力减40");
            } else {
                System.out.println("违规操作");
            }
        } else if (weapon.equals("匕首")) {
            if (aim.equals("头部")) {
                System.out.println("受伤,血掉50,体力减10");
            } else {
                System.out.println("违规操作");
            }
        } else {
            System.out.println("违规操作");
        }
    }
/*
运行结果:
请选择使用的武器(子弹或者匕首)
匕首
请选择击中位置(头部或者腹部)
头部
受伤,血掉50,体力减10
*/

第二道作业

需求说明

抽奖规则:会员号的百位数字等于产生的随机数字即为幸运会员

产生随机数(

0~9 )的方法如下:

int random=(int)(Math.random()*10);

 

示例代码

public static void homework_02() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("我行我素购物管理系统 > 抽奖系统\n");
        System.out.print("请输入4位会员卡号:");
        int random = (int) (Math.random() * 10);
        int id = scanner.nextInt();
        int a;
        a = id / 100 % 10;
        if (a == random) {
            System.out.println(id + "号的客户是幸运客户,您中奖了!奖品是MP3。");
        } else {
            System.out.println(id + "号客户,谢谢你的支持!");
        }
    }
/*
我行我素购物管理系统 > 抽奖系统

请输入4位会员卡号:1542
1542号客户,谢谢你的支持!
*/

第三道作业

需求说明

商场推出“换购优惠”服务。

对于单次消费满 50 元的顾客,加 2 元,可换购百事可乐 1 瓶。

对于单次消费满 100 元的顾客,加 3 元,可换购 500ml 可乐 1 瓶。加 10 元,可换购 5 公斤面粉

一袋。

对于单次消费满 200 元的顾客,加 10 元,可换购苏泊尔炒菜锅一个。加 20 元,可换购欧莱雅爽

肤水一瓶。规定:单次消费只有一次换购机会。

使用程序模拟,并输出消费总金额和换购信息

示例代码

public static void homework_03() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入消费金额:");
        int money = scanner.nextInt();
        System.out.println("是否参加优惠换购活动?");
        System.out.println("1:满50元,加2元换购百事可乐饮料1瓶");
        System.out.println("2:满100元,加3元换购500ml可乐一瓶");
        System.out.println("3:满100元,加10元换购5公斤面粉");
        System.out.println("4:满200元,加10元可换购1个苏泊尔炒菜锅");
        System.out.println("5:满200元,加20元可换购欧莱雅爽肤水一瓶");
        System.out.println("0:不换购");
        System.out.print("请选择:");
        int b = scanner.nextInt();
        switch (b) {
            case 1:
                money += 2;
                System.out.println("本次消费总金额:" + money);
                System.out.println("成功换购:百事可乐饮料1瓶");
                break;
            case 2:
                money += 3;
                System.out.println("本次消费总金额:" + money);
                System.out.println("成功换购:500ml可乐一瓶");
                break;
            case 3:
                money += 10;
                System.out.println("本次消费总金额:" + money);
                System.out.println("成功换购:5公斤面粉");
                break;
            case 4:
                money += 10;
                System.out.println("本次消费总金额:" + money);
                System.out.println("成功换购:1个苏泊尔炒菜锅");
                break;
            case 5:
                money += 20;
                System.out.println("本次消费总金额:" + money);
                System.out.println("成功换购:欧莱雅爽肤水一瓶");
                break;
            default:
                System.out.println("本次消费总金额:" + money);
                System.out.println("不换购");
                break;
        }
    }
/*
请输入消费金额:152
是否参加优惠换购活动?
1:满50元,加2元换购百事可乐饮料1瓶
2:满100元,加3元换购500ml可乐一瓶
3:满100元,加10元换购5公斤面粉
4:满200元,加10元可换购1个苏泊尔炒菜锅
5:满200元,加20元可换购欧莱雅爽肤水一瓶
0:不换购
请选择:3
本次消费总金额:162
成功换购:5公斤面粉
*/

第四道作业--拓展题

问题描述

乐乐小朋友正在玩一个小球装箱的游戏。现在有N个小球(编号为1到N),每个小球有一种颜色(红色或绿色),并且每个小球都标有一个数字。现在有两个不同的球箱A和B,乐乐想把这些球放进这两个球箱里面。并且保证:

  1. 每个球箱中球的数量要一样多。

  2. 球箱A中的任意一个球上的数字不小于球箱B中任意一个球上的数字。

  3. 如果红色小球和绿色小球上的数字相同时,红色小球优先放入球箱A。

装箱完成后,乐乐想知道A、B两个球箱中红色小球个绿色小球各有多少个。由于球的数量较多,请你编程计算一下吧。

输入格式:

输出格式 :

 

输入样例:

6

1 1

3 0

2 1

4 1

6 0

5 0

输出样例:

2 1

1 2

示例代码

public static void homework_04() {
//        int[][] ball = {{6}, {1, 3, 2, 4, 6, 5}, {1, 0, 1, 1, 0, 0}};
//        int[][] ball = {{8},{2,2,2,4,2,5,8,1},{1,0,0,1,0,1,1,1}};
        int[][] ball = {{10},{3,2,2,2,4,2,5,8,1,1},{1,0,1,1,0,0,0,1,1,1}};
        int[][] a = new int[ball[0][0]][ball[0][0]];
        int[] b1 = new int[2], b2 = new int[2];
    //利用排序进行数据的存储,因为始终要保持A箱的点数大于等于B箱子中的点数
        for (int i = 1; i <= ball[0][0] - 1; i++) {//轮数
            for (int j = 0; j < ball[0][0] - i; j++) {//j代表坐标
                if (ball[1][j] > ball[1][j + 1]) {
                    int temp,temp1;
                    temp = ball[1][j];
                    temp1 = ball[2][j];
                    ball[1][j] = ball[1][j + 1];
                    ball[2][j] = ball[2][j + 1];
                    ball[1][j + 1] = temp;
                    ball[2][j + 1] = temp1;
                }
                else if(ball[1][j] == ball[1][j + 1]){
                    if(ball[2][j] == 0) {
                        int temp,temp1;
                        temp = ball[1][j];
                        temp1 = ball[2][j];
                        ball[1][j] = ball[1][j + 1];
                        ball[2][j] = ball[2][j + 1];
                        ball[1][j + 1] = temp;
                        ball[2][j + 1] = temp1;
                    }
                }
            }
        }
    //存入箱子
        int j = 0;
        for (int i = ball[0][0]-1;i>=ball[0][0]/2;i--) {
            if (ball[2][i] == 0) {
                b1[0]++;
            } else {
                b1[1]++;
            }
        }
        for (int i = ball[0][0]/2-1;i>=0;i--) {
            if (ball[2][i] == 0) {
                b2[0]++;
            } else {
                b2[1]++;
            }
        }
        System.out.println(b1[0] + " " + b1[1]);
        System.out.println(b2[0] + " " + b2[1]);
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值