1.表达式&语句块
1.1表达式
Java中有运算符和运算数构成的一行语句,称为表达式
声明一个变量
给变量赋值
调用一个方法。。。。
1.2.语句块
把包含在{}之间的代码,称为语句块,语句块是由多行表达式构成的一个集合
表达式
一个分支
一个循环。。。
2.方法(method)
2.1.方法的概述
将实现某个特定功能的代码块封装称为一个整体,以实现重复使用的目的
可重复使用
便于维护
2.2方法定义
修饰符 +返回值+方法名+(参数列表)+{
语句块
}
2.3方法调用
静态方法直接可以在main方法中直接调用
普通方法先new对象,然后通过对象调用
2.4参数传递问题
参数传值他只传值,不传存储空间
2.5.return关键字
第一个作用
当方法有返回值的时候,需要用return关键字返回值
return关键字后面不能再有可执行代码
第二个作用
中断程序
3.流程控制
3.1分支语句
3.1.1 if...
int a = 59;
if(a >= 60)System.out.println("你考试及格了!");
3.1.2 if...else...
int a = 59;
if (a >= 60){
System.out.println("你考试及格了!");
}else{
System.out.println("你考试不及格!");
}
3.1.3 if...else if...
int a = 3500;
if(a < 1000){
System.out.println("倔强青铜");
}else if(a >= 1000 && a < 2000){
System.out.println("不屈白银");
}else if(a >= 2000 && a < 3000){
System.out.println("荣耀黄金");
}else if(a >= 3000 && a < 4000){
System.out.println("华贵铂金");
}else if(a >= 4000 && a < 5000){
System.out.println("璀璨钻石");
}else if(a >= 5000 && a < 6000){
System.out.println("超凡打湿");
}else{
System.out.println("最强王者");
}
根据提供的一个年份判断该年份一共有多少天?
public class Next {
public static void main(String[] args) {
Next next = new Next();
next.m1();
}
public void m1(){
Scanner sc = new Scanner(System.in);
System.out.println("输入一个年份");
int a = sc.nextInt();
if (a%4==0 && a%100!=0 ){
System.out.println(a+"年,是闰年,该年有366天");
return;
}
System.out.println(a+"年,是平年,该年有365天");
}
}
3.1.2 switch
除了‘if’语句,Java中还提供了‘switch’语句用于分支判断,‘switch’语句通常用于对某些特定值的分支。
switch中间的变量只能是int,byte、short、char、填到中间是在不损失精度的情况下向上转型为interesting,string通过底层算法(hash)转换成了int
语法:
switch(变量){
case1:
执行语句;
break;
case2:
执行语句;
break;
case3:
执行语句;
break;
default:
执行语句:
}
判断季节:
public class Jijie {
public static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("请输入月份");
int in = sc.nextInt();
switch (in){
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("输入错误,没有这个月份");
return;
}
}
}
递归:
方法自己调用自己
实例从1输出到100
public class Digui {
//1-100输出
public static void main(String[] args) {
Digui digui =new Digui();
Digui.m1();
}
public static int i =0;
public static void m1(){
if (i<100){
i++;
System.out.println(i);
m1();
}
}
}
练习:从1加到100
public class Digui {
public static void main(String[] args) {
Digui digui =new Digui();
Digui.m1();
}
public static int i =0;
public static int sum =0;
public static void m1(){
if (i<100){
i++;
sum+=i;
m1();
}
System.out.println(sum);
}
}
4.扩展:标准输入&随机数
4.1 标准输入(`System.in`)之Scanner类
Java为了获取用户的输入,提供了一个scanner工具类,获取系统输入:System.in
nextInt() 获得用户输入的整数
next() 获得用户输入的字串符
public class Sc {
public static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("请输入一段数字");
int a = sc.nextInt();
System.out.println(a);
}
}
4.2随机数
随机数是由数学类Math提供的一个静态方法random()生成的,生成的随机值范围在0-1之间的浮点数
public class Suijishu {
public static void main(String[] args) {
double a = Math.random();
System.out.println(a);
int b = (int)(Math.random()*100);
System.out.println(b);
}
}
练习题:
1.先随机一个数字
2.让用户一个数字
3.输入之后让输入的数字与随机数相比较,如果比随机数大,则提示大了,小了就提示小了,并提示用户重新输入数字,相等就提示猜对了,整个程序结束
public class Demo01 {
static Scanner sc = new Scanner(System.in);
static int a = (int)(Math.random()*100);
public static void main(String[] args) {
Demo01 demo01 = new Demo01();
Demo01.m1();
}
public static void m1(){
System.out.println("请输入一个数字");
int in = sc.nextInt();
if (in>a){
System.out.println("大了");
}else if (in<a){
System.out.println("小了");
}else {
System.out.println("猜对了");
return;
}
m1();
}
}
1. 模拟地下城与勇士(DNF)的装备强化过程:
提示1:
- DNF装备强化在+1~+3 不会失败;
- +4~+7,失败后物品原有强化等级降低1级;
- +8~+10,失败后掉3级;
- 10上11或以上失败就爆了。
提示2:
- DNF装备强化1~3级,成功率100%
- DNF装备强化3~4级,成功率95%
- DNF装备强化4~5级,成功率90%
- DNF装备强化5~6级,成功率80%
- DNF装备强化6~7级,成功率75%
- DNF装备强化7~8级,成功率62.1%
- DNF装备强化8~9级,成功率53.7%
- DNF装备强化9~10级,成功率41.4%
- DNF装备强化10~11级,成功率33.9%
- DNF装备强化11~12级,成功率28%
- DNF装备强化12~13级,成功率20.7%
- DNF装备强化13~14级,成功率17.3%
- DNF装备强化14~15级,成功率13.6%
- DNF装备强化15~16级,成功率10.1%
实现流程:
要求输入装备的原始等级,输入1执行强化,根据原始等级以及强化的成功率,显示装备的强化结果
public class Demo02 {
Scanner sc = new Scanner(System.in);
int i = 1; //变量等级
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
demo02.start();
}
public void start(){
System.out.println("是否继续强化装备");
System.out.println("1.强化");
System.out.println("2.退出游戏");
int in = sc.nextInt();
switch (in){
case 1:
intensify(); //强化
start();
break;
case 2:
System.out.println("欢迎下次再来!");
return;
}
}
private void intensify() {
int a = (int)(Math.random()*100);
System.out.println("你现在的装备等级是"+i);
if (i<3){
i++;
System.out.println("强化成功!");
}else if (i<4 && a>5){
i++;
System.out.println("强化成功!");
}else if (i<4 && a<5){
i--;
System.out.println("强化失败!");
}else if (i<5 && a<90){
i++;
System.out.println("强化成功!");
}else if (i<5 && a>90){
i--;
System.out.println("强化失败!");
}else if (i<6 && a<80){
i++;
System.out.println("强化成功!");
}else if (i<6 && a>80){
i--;
System.out.println("强化失败!");
}else if (i<7 && a<75){
i++;
System.out.println("强化成功!");
}else if (i<7 && a>75){
i--;
System.out.println("强化失败!");
}else if (i<8 && a<62){
i++;
System.out.println("强化成功!");
}else if (i<8 && a>62){
i-=3;
System.out.println("强化失败!");
}else if (i<9 && a<54){
i++;
System.out.println("强化成功!");
}else if (i<9 && a>54){
i-=3;
System.out.println("强化失败!");
}else if (i<10 && a<41){
i++;
System.out.println("强化成功!");
}else if (i<10 && a>41){
i-=3;
System.out.println("强化失败!");
}else if (i<11 && a<34){
i++;
System.out.println("强化成功!");
}else if (i<11 && a>34){
System.out.println("强化失败!游戏结束!");
return;
}else if (i<12 && a<28){
i++;
System.out.println("强化成功!");
}else if (i<12 && a>28){
System.out.println("强化失败!游戏结束!");
return;
}else if (i<13 && a<21){
i++;
System.out.println("强化成功!");
}else if (i<13 && a>21){
System.out.println("强化失败!游戏结束!");
return;
}else if (i<14 && a<17){
i++;
System.out.println("强化成功!");
}else if (i<14 && a>17){
System.out.println("强化失败!游戏结束!");
return;
}else if (i<15 && a<14){
i++;
System.out.println("强化成功!");
}else if (i<15 && a>14){
System.out.println("强化失败!游戏结束!");
return;
}else if (i<16 && a<10){
i++;
System.out.println("强化成功!以提升至满级:"+i);
return;
}else if (i<16 && a>10){
System.out.println("强化失败!游戏结束!");
return;
}
}
}
练习.银行取钱
进入系统需要输入账户和密码
主菜单需要有查询余额、取款、存款、退出系统
只有退出系统才能结束程序,其它操作不能结束
密码输入错误三次,自动锁定账户(提示账户锁定,无法再登录)
每次取钱需要输入随机的四位数验证码,才能取钱成功
public class Dome03 {
Scanner sc = new Scanner(System.in);
int money = (int)(Math.random()*1000);
public static void main(String[] args) {
Dome03 dome03 = new Dome03();
dome03.dl();
}
public void dl(){
System.out.println("建设银行欢迎您!");
System.out.println("请输入账号(手机号码)");
String number = sc.next();
System.out.println("请输入密码(任意数字加小写字母)");
String password = sc.next();
start(number,password);
}
public void start(String number,String password){
System.out.println("尊敬的"+number+"用户您好!请选择您需要的操作");
System.out.println("1.查询余额");
System.out.println("2.存钱");
System.out.println("3.取钱");
int in = sc.nextInt();
switch (in){
case 1:
look();
start(number,password);
break;
case 2:
save();
start(number,password);
break;
case 3:
draw(password);
start(number,password);
break;
default:
System.out.println("欢迎下次再来!");
return;
}
}
private void look() {
System.out.println("你现在卡内余额是"+money+"元!");
}
private void save() {
System.out.println("请输入您要存储的金额!");
int c = sc.nextInt();
money+=c;
System.out.println("存储成功!");
}
private void draw(String password) {
int y = (int)(Math.random()*9000+1000);
int j = 0;
System.out.println("请输入密码");
String m = sc.next();
if (m.equals(password)) {
System.out.println("请输入要取出的金额");
int q = sc.nextInt();
System.out.println("请输入验证码" + y);
int y1 = sc.nextInt();
if (y == y1) {
if (q < money) {
money -= q;
System.out.println("取出成功");
}
} else {
draw(password);
}
} else {
if (j < 3) {
draw(password);
j++;
}
System.out.println("输入次数超过三次,账户锁定");
}
}
}