目录
今日内容
-
运算符
-
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,乐乐想把这些球放进这两个球箱里面。并且保证:
每个球箱中球的数量要一样多。
球箱A中的任意一个球上的数字不小于球箱B中任意一个球上的数字。
如果红色小球和绿色小球上的数字相同时,红色小球优先放入球箱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]);
}