每日随机
public static void main(String[] args) { //摇号 1-30 //double randomNum = Math.random()*30+1;//0.0-30.0 包头不包尾 //System.out.println(randomNum); //1000-10000 //(Math.random()*9000+1000) int[] array = {5};//维护之前随机过的数字 //循环遍历 参与过这些号码 int num; while (true) { boolean flag = false; num = (int) (Math.random() * 30 + 1); for (int i : array) { if (num == i) { flag = true; break; } } //从开始到末尾一直比较 都与随机数字不等的话 结束外层循环 if (!flag) { break; } } System.out.println("随机的数字:" + num); }
方法
//psvm/main public static void main(String[] args) { }
1. 组成部分
[1. 访问权限修饰符] public 公共的 private protected 默认/缺省 [2. 普通修饰符] static 静态的 final synchronized native abstract 3. 方法的返回值类型----> 所有的数据类型都可以充当方法的返回值类型 ---> 只能返回一种数据类型 1.1 void 无返回值类型---> Void类 1.2 有返回值类型 4. 方法名称----> 变量名 类名 方法名 都属于标识符。只要自己命名的东西 ---> 规范: 小写驼峰 目前方法名唯一 5. 形式参数---->形参 1.1 无参 a() 1.2 有参 所有的数据类型都可以充当参数 b(int a,String s) 其实就是局部变量 [6. {}] 方法体 编写功能代码
2. 分类
一般是结合返回值和形式参数进行分类。
1.1 无参无返回值
1.2 无参有返回值
1.3 有参无返回值
1.4 有参有返回值
3. 自定义方法
3.1 无参无返回值
学习中+写作业+功能测试
//方法与方法之间是平级的关系 //创建无参无返回值方法 public static void demo() { System.out.println("demo............."); } public static void a() { System.out.println("a............."); }
在方法里面调用方法
//方法入栈 先进后出 public static void main(String[] args) { System.out.println("main开始...................."); //调用a方法 a(); System.out.println("main结束...................."); }
3.2 无参有返回值
//需求: 模拟用户登录 public static boolean userLogin() { String username = "admin"; String password = "admin"; Scanner input = new Scanner(System.in); System.out.println("请录入用户名:"); String name = input.nextLine(); System.out.println("请录入密码:"); String pass = input.nextLine(); if (!username.equals(name) || !password.equals(pass)) { return false; } //jdhffgd return true; }
public static void main(String[] args) { System.out.println("main开始...................."); //调用demo方法 //对于方法的返回值 谁调用它 就把数据返给谁 //int num = demo();//接收返回值 //int result = num + 100; if(userLogin()){ System.out.println("登录成功"); }else{ System.out.println("登录失败"); } System.out.println(userLogin()); System.out.println("main结束...................." ); }
3.3 有参无返回值
//参数传递: 值传递 // 1.基本数据类型作为形参 传递的是数据 // 2.引用数据类型作为形参 传递的是内存地址值(引用传递) // 3. String: 数据不可变 1.11 private final byte[] value;
1. 基本数据类型
//创建有参无返回值 //形式参数: 参数个数 参数类型 public static void demo1(int num1) { System.out.println("demo1.。。。。。。。。。。。"); if (num1 < 0) { System.out.println("num1是一个负数"); return; } num1 += 100; System.out.println("num1运算之后的数据:" + num1);//200 }
public static void main(String[] args) { System.out.println("main开始.................."); //调用方法 //调用有参的方法 必须传参 实际参数---> 实参 //int num1 = 100; //demo1(num1); System.out.println("main结束.................."); //System.out.println("main里面的num1的数据:" + num1); //参数传递: 基本数据类型作为形参 传递的是数据 }
2. 引用数据类型_数组
//修改数组的第一个数据 public static void demo2(int[] array) { //提前预判 避免出现一些不正常的现象 if (array == null) { System.out.println("参数不能为null"); return; } int length = array.length; if (length == 0) { System.out.println("[]"); return; } array[0] = 100; //遍历所有的数据 /*for (int i : array) { System.out.println("元素是:" + i); }*/ System.out.println("demo2修改之后的数组元素:" + Arrays.toString(array));//[100, 2, 3] }
public static void main(String[] args) { System.out.println("main开始.................."); //int[] array = new int[]{1, 2, 3}; //demo2(array); //System.out.println("main里面的array的数据:" + Arrays.toString(array));// [1,2,3] [100,2,3] }
3. 引用数据类型_String
public static void demo3(String str) { System.out.println("demo3修改之前的数据:" + str); str = "hello"; System.out.println("demo3..........str:" + str); }
String str = "abc"; demo3(str); System.out.println("main里面str的数据:" + str);//hello abc String的数据不可变的 常量 final char[] value;
4. 可变参数
//用户注册 //用户名 密码 年龄 简介---> 获得数据数量不固定的 //不清楚具体传输多少个数据的时候 可以使用可变参数进行维护 //数据类型...变量名称 //一个方法里面有且只有1个可变参数 必须在方法形参的最后一个位置上 //可变参数就是一个一维数组 传参的时候可以传递>=0个数据 //底层使用的时候比较多。 封装的时候 反射 public static void userRegister(String... params) { System.out.println("params:" + Arrays.toString(params));//[] }
3.4 有参有返回值
/** * 模拟实现计算器功能 * * @param num1 第一个数字 * @param num2 第2个数字 * @param operator 运算符 * @return 运算之后的结果 */ public static double cal(int num1, int num2, String operator) { if ("/".equals(operator) || "%".equals(operator)) { if (num2 == 0) { System.out.println("除数不能为0"); //不需要返回数据 还要结束当前这个方法 终止当前程序 //1.可以使用手动产生异常 throws //2.System.exit(-1); System.exit(-1);//终止当前程序 } } double result = 0; switch (operator) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": result = num1 / num2; break; case "%": result = num1 % num2; break; default: System.out.println("录入运算符不符合要求!"); System.exit(-1); } return result; }
4.课堂练习
1.随机产生1-30的数,出现的不能再出现
public class Random { public static void main(String[] args) { int[] array = {1,2};//维护之前随机出现过的数字,出现的将不让其出现 //循环遍历 参与过这些号码 int num; while (true) { boolean flag = false; //表示此次产生的随机数与之前不同 num = (int) (Math.random() * 30 + 1); for (int i : array) { if (num == i) { flag = true; break; //如果相等,跳出此次for循环,下面的if为false,也不执行,再次执行while循环 } //如果遍历结束不等,flag还是false值,在if中为true,执行,然后退出while循环 } if (!flag) { break; } } System.out.println("随机的数字:" + num); } }
2.无参无返回值(方法与方法之间是平级的关系)
public class MethodDemo1 { public static void demo() { System.out.println("demo............."); } public static void a() { //调用demo方法 我们方法在同一个文件中 方法名称(); demo(); System.out.println("a............."); } //方法入栈 先进后出 public static void main(String[] args) { //jdk会从main方法开始运行 System.out.println("main开始...................."); //调用a方法 a(); System.out.println("main结束...................."); } }
3.无参有返回值
public class MethodDemo2 { public static void main(String[] args) { System.out.println("main开始...................."); //调用demo方法 //对于方法的返回值 谁调用它 就把数据返给谁 //int num = demo(); //接收返回值 //int result = num + 100; if (userLogin()) { System.out.println("登录成功"); } else { System.out.println("登录失败"); } System.out.println(userLogin()); System.out.println("main结束...................."); } public static void a() { System.out.println("djshsdgds"); return; //没有返回值的方法,可以不写return语句 或者return; } //需求: 模拟用户登录 public static boolean userLogin() { String username = "admin"; String password = "admin"; Scanner input = new Scanner(System.in); System.out.println("请录入用户名:"); String name = input.nextLine(); System.out.println("请录入密码:"); String pass = input.nextLine(); if (!username.equals(name) || !password.equals(pass)) { return false; } return true; } //创建无参有返回值 返回值类型很灵活 结合需求分析 //在有返回值的方法中: 在方法体里面必须写 return 语句; return 数据; public static int demo() { //必须返回一个与返回值类型相似(类型转换)/相同的数据; //动态录入2个数据 比较 Scanner input = new Scanner(System.in); System.out.println("录入第1个数据:"); int num1 = input.nextInt(); System.out.println("录入第2个数据:"); int num2 = input.nextInt(); if (num1 > num2) { return 100; //看到return,就结束方法 } System.out.println("a-----------------"); return 200; } }
4.有参无返回值
public class MethodDemo3 { //一个方法就是一个栈帧 栈帧: 局部变量表 public static void main(String[] args) { System.out.println("main开始.................."); //调用方法 //调用有参的方法 必须传实际参数(简称实参) //int num1 = 100; //demo1(num1); 调用demo1,把实参100传给它 //int[] array = new int[]{1, 2, 3};---------------------------------对应demo2 //demo2(array); //System.out.println("main里面的array的数据:" + Arrays.toString(array)); //实参若为数组,传回的是内存地址值 //String str = "abc";----------------------------------------对应demo3 //demo3(str, 100); //System.out.println("main里面str的数据:" + str); //String的数据不可变的 userRegister("admin", "1234", "男", "河南郑州", "100"); System.out.println("main结束.................."); //System.out.println("main里面的num1的数据:" + num1); //参数传递: 值传递 // 1.基本数据类型作为形参 传递的是数据 // 2.引用数据类型作为形参 传递的是内存地址值(引用传递) // 3.String: 数据不可变 1.11 private final byte[] value; } //用户注册 //用户名 密码 年龄 简介---> 获得数据数量不固定的 //不清楚具体传输多少个数据的时候 可以使用可变参数进行维护 使用方法:数据类型...变量名称 //一个方法里面有且只有1个可变参数 必须在方法形参的最后一个位置上 //可变参数就是一个一维数组 传参的时候可以传递>=0个数据 //底层使用的时候比较多。 封装的时候 反射 public static void userRegister(String... params) { System.out.println("params:" + Arrays.toString(params)); //["admin", "1234", "男", "河南郑州", "100"] } //一个方法最多可以有多少个形参? <=4 public static void demo3(String str, int num) { //传入了“abc”和100 System.out.println("demo3修改之前的数据:" + str); //此时为“abc” str = "hello"; System.out.println("demo3..........str:" + str); } //修改数组的第一个数据 public static void demo2(int[] array) { //提前预判 避免出现一些不正常的现象 if (array == null) { System.out.println("参数不能为null"); return; } int length = array.length; if (length == 0) { System.out.println("[]"); return; } array[0] = 100; //遍历所有的数据 /*for (int i : array) { System.out.println("元素是:" + i); }*/ System.out.println("demo2修改之后的数组元素:" + Arrays.toString(array));//[100, 2, 3] } //创建有参无返回值 //形式参数: 参数个数 参数类型 public static void demo1(int num1) { System.out.println("demo1.。。。。。。。。。。。"); if (num1 < 0) { System.out.println("num1是一个负数"); return; } num1 += 100; System.out.println("num1运算之后的数据:" + num1);//200 } }
4.1 有参无返回值-01 (可传多个参数)
public class MethodDemo301 { public static void main(String[] args) { System.out.println("main开始.................."); userRegister("admin", "1234", "男", "河南郑州", "100"); System.out.println("main结束.................."); } public static void userRegister(String... params) { System.out.println("params:" + Arrays.toString(params)); //["admin", "1234", "男", "河南郑州", "100"] } }
4.2 有参无返回值-02 (String)
public class MethodDemo302 { public static void main(String[] args) { System.out.println("main开始.................."); String str = "abc"; demo3(str, 100); System.out.println("main里面str的数据:" + str); //这里为“abc” System.out.println("main结束.................."); } public static void demo3(String str, int num) { //传入了“abc”和100 System.out.println("demo3修改之前的数据:" + str); //此时为“abc” str = "hello"; System.out.println("demo3修改之后的数据:" + str); //这里为"hello" } }
4.3 有参无返回值-03 (数组)
public class MethodDemo303 { public static void main(String[] args) { System.out.println("main开始.................."); int[] array = new int[]{1,2,3}; //int[] array = new int[0]; // 或者 int[] array = new int[]{}; 是数组长度为0,是[],数组并不为空,向堆内存申请了空间 //int[] array = null; 这是直接参数为null。数组为空,此时array不指向任何对象 demo2(array); System.out.println("main里面的array的数据:" + Arrays.toString(array)); //[100,2,3] System.out.println("main结束.................."); } public static void demo2(int[] array) { //提前预判 避免出现一些不正常的现象 if (array == null) { System.out.println("参数不能为null"); return; } int length = array.length; if (length == 0) { System.out.println("[]"); return; } array[0] = 100; //遍历所有的数据 /*for (int i : array) { System.out.println("元素是:" + i); }*/ System.out.println("demo2修改之后的数组元素:" + Arrays.toString(array)); //[100, 2, 3] } }
4.4 有参无返回值-04
public class MethodDemo304 { public static void main(String[] args) { System.out.println("main开始.................."); int num1 = 100; demo1(num1); System.out.println("num1的值为:" + num1); //100 System.out.println("main结束.................."); } public static void demo1(int num1) { System.out.println("demo1.。。。。。。。。。。。"); if (num1 < 0) { System.out.println("num1是一个负数"); return; } num1 += 100; System.out.println("num1运算之后的数据:" + num1); //200 } }
5.有参有返回值
public class MethodDemo4 { public static void main(String[] args) { //使用有参有返回值: 模拟实现计算器功能 //整数之间运算 byte short int long /*double num = cal(10, 0, "+"); System.out.println(num);*/ long lon1 = 1000L; long lon2 = 2000L; cal(lon1, lon2, "*"); } //在一个文件里面 很多重名的方法 一般是出现在工具类里面 //方法重载: overload //1. 方法名必须相同的 //2. 形参列表必须不同 //3. 与修饰符/返回值类型无关 private static int a(int a) { return 0; } public static double cal(long num1, long num2, String operator) { if ("/".equals(operator) || "%".equals(operator)) { if (num2 == 0) { System.out.println("除数不能为0"); //不需要返回数据 还要结束当前这个方法 终止当前程序 //1.可以使用手动产生异常 throws //2.System.exit(-1); System.exit(-1); //终止当前程序 } } double result = 0; switch (operator) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": result = num1 / num2; break; case "%": result = num1 % num2; break; default: System.out.println("录入运算符不符合要求!"); System.exit(-1); } return result; }
//可在方法前面也加文档注释 /** * 模拟实现计算器功能 * * @param num1 第一个数字 * @param num2 第2个数字 * @param operator 运算符 * @return 运算之后的结果 */ public static double cal(int num1, int num2, String operator) { if ("/".equals(operator) || "%".equals(operator)) { if (num2 == 0) { System.out.println("除数不能为0"); //不需要返回数据 还要结束当前这个方法 终止当前程序 //1.可以使用手动产生异常 throws //2.System.exit(-1); System.exit(-1);//终止当前程序 } } double result = 0; switch (operator) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": result = num1 / num2; break; case "%": result = num1 % num2; break; default: System.out.println("录入运算符不符合要求!"); System.exit(-1); } return result; } }
5.课后作业( 幸运抽奖 )
public class Lucky { public static void main(String[] args) { startGame(); } private static void startGame() { Scanner input = new Scanner(System.in); String answer; boolean regFlag = false; //注册标志 boolean loginFlag = false; //登录标志 do { System.out.println("\n*********** 欢迎进入大富翁抽奖系统 ***********\n"); System.out.println(" 1.注 册 "); System.out.println(" 2.登 录 "); System.out.println(" 3.抽 奖 "); System.out.println(" 5.查询所有的会员信息 "); System.out.println(" 4.退 出 \n"); System.out.println("*********************************************\n"); System.out.print("请选择要进行的操作(1-4): "); int choice = input.nextInt(); switch (choice) { case 1: regFlag = register(input); //实际参数用的input,利用参数传递,为了用第一句话 break; case 2: loginFlag = login(input, regFlag, loginFlag); break; case 3: lucky(input, loginFlag); break; case 4: System.out.println("程序退出"); input.close(); //程序退出也要释放资源 return; } System.out.println("是否继续?y/n"); answer = input.next(); } while ("y".equals(answer)); System.out.println("程序结束"); input.close(); } private static void lucky(Scanner input, boolean loginFlag) { if (!loginFlag) { System.out.println("请先登录"); return; } System.out.println("录入会员卡号:"); int memberNo = input.nextInt(); int[] array = new int[5]; for (int i = 0; i < 5; i++) { array[i] = (int) (Math.random() * 9000 + 1000); } System.out.println("本日的幸运卡号:" + Arrays.toString(array)); for (int num : array) { if (num == memberNo) { System.out.println(memberNo + "是幸运会员"); return; } } System.out.println(memberNo + "不是幸运会员"); } private static boolean login(Scanner input, boolean regFlag, boolean loginFlag) { //已经成功地注册数据 if (!regFlag) { System.out.println("请先注册"); return false; } if (loginFlag) { System.out.println("您已经成功登陆过了,无需重复登录"); System.out.println("是否切换账号登录y/n"); String s = input.next(); if ("n".equals(s)) { return true; } } int count = 3; String loginName; do { count--; System.out.println("请填写登录信息 "); System.out.print("请输入用户名: "); loginName = input.next(); System.out.print("请输入密码: "); String loginPass = input.next(); //比较----> 与注册时候的信息比较(信息存储数组中了) for (int index = 0; index <= totalCount; index++) { if (loginName.equals(nameArray[index]) && loginPass.equals(passArray[index])) { System.out.println("欢迎你:" + loginName); return true; } } if (count == 0) { System.out.println("机会使用完毕,返回主页面"); return false; } System.out.println("登录失败,还剩下" + count + "次机会,请重新登录!"); } while (true); } public static int totalCount = 0;//维护的数组中有小的元素个数 以及一个人所有信息的索引位置 public static String[] nameArray = new String[10]; public static String[] passArray = new String[10]; public static int[] randomNoArray = new int[10]; //在一个方法中: 如何获得另外一个方法里面的变量? // 1. 参数传递 // 2. 全局变量: 放在方法之外 所有的方法都可以访问全局变量 private static boolean register(Scanner input) { System.out.println("请填写个人注册信息 "); System.out.print("请输入用户名: "); String name = input.next(); System.out.print("请输入密码: "); String pass = input.next(); int randomNo = (int) (Math.random() * 9000 + 1000); int length = nameArray.length; if (totalCount + 1 >= length) { //扩容 nameArray = Arrays.copyOf(nameArray, 2 * totalCount); //存放用户名的数组扩容 passArray = Arrays.copyOf(passArray, 2 * totalCount); randomNoArray = Arrays.copyOf(randomNoArray, 2 * totalCount); } nameArray[totalCount] = name; passArray[totalCount] = pass; randomNoArray[totalCount] = randomNo; totalCount++; System.out.println("注册成功! 请牢记您的会员号"); System.out.println("用户名\t密码\t会员卡号"); System.out.println(name + "\t" + pass + "\t" + randomNo); return true; } }
6.附加题
public class FuJiaExercise { public static void main(String[] args) { exercise12(); } private static void exercise12() { //定义一个长度为31的整数数组,依次放入的2的若干次方,第一个放1,第二个放2,第三个放4,第四个放8。。。。并输出 int[] array = new int[31]; for (int index = 0; index < 31; index++) { array[index] = (int) Math.pow(2, index); } System.out.println(Arrays.toString(array)); } private static void exercise11() { //现在有如下一个数组: int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}; 要求将以上数组中的0项去掉,将不为0的值存入一个新的数组,生成新的数组为 int[] oldArr = {1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5}; int[] newArr = new int[oldArr.length]; //获得原数组中不为0 的数据 int index = 0; for (int i : oldArr) { if (i != 0) { newArr[index++] = i; } } newArr = Arrays.copyOf(newArr, index); System.out.println(Arrays.toString(newArr)); } private static void exercise10() { //现有4个数字为6、7、9、5,能组成多少个互不相同且无重复数字的三位数?都是多少? //例如有 679,675,697,695,657,659.....等等 //4*3*2=24 int[] array = {6, 7, 9, 5}; int length = array.length; int count = 0; for (int baiIndex = 0; baiIndex < length; baiIndex++) { int bai = array[baiIndex]; for (int shiIndex = 0; shiIndex < length; shiIndex++) { int shi = array[shiIndex]; for (int geIndex = 0; geIndex < length; geIndex++) { int ge = array[geIndex]; if (bai != shi && shi != ge && ge != bai) { count++; System.out.print(bai + "" + shi + "" + ge + "\t"); } } } } System.out.println(); System.out.println(count); } private static void exercise9() { //定义一个长度为10的int类型数组,接受10个值后使用冒泡排序算法对数组进行排序 int[] array = {87, 84, 83, 81}; for (int i = 1; i < array.length; i++) { for (int j = 0; j < array.length - i; j++) { if (array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } System.out.println(Arrays.toString(array)); } private static void exercise8() { //请用程序接收一个三位数,然后打印出所有0到这个数之间 带3和3的倍数的数 //例如 有99 , 96 , 93 , 90 , 87 , 84 , 83 , 81 , 78 , 75 , 73 , 72.......等等 for (int num = 100; num >= 1; num--) { if (num % 3 == 0 || num % 10 == 3 || num / 100 == 3 || num / 10 % 10 == 3) { System.out.print(num + ", "); } } } private static void exercise7() { //一球从100米高度处自由落下,每次落地后反跳回原高度的一半;再落下再弹回,求它在 第10次落地反弹时,反弹多高?以及共经过多少米? double height = 100; double sum = 0; for (int i = 1; i <= 10; i++) { height /= 2; sum += 3 * height; } System.out.println("反弹多高:" + height); System.out.println("共经过多少米:" + sum); } private static void exercise6() { //一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米) int count = 0; double height = 0.08; while (height < 8848130) { height *= 2; count++; } System.out.println("对折多少次:" + count); } private static void exercise5() { //计算用户输入的日期离1900年1月1日相距多少天 int year = 1901; int month = 1; int day = 1; //算年: 365 366 年是否是闰年 for (int y = 1900; y < year; y++) { if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) { day += 366; continue; } day += 365; } //算月份: 30 31 29/28 for (int m = 1; m < month; m++) { switch (m) { case 1: case 3: case 5: case 7: case 8: case 10: day += 31; break; case 2: if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { day += 29; } else { day += 28; } break; default: day += 30; break; } } System.out.println("距离1900-01-01总共:" + day + "天"); } private static void exercise4() { int totalRow = 9; int little = totalRow / 2;//4 int many = little + 1;//5 for (int i = 1; i <= many; i++) { for (int j = 1; j <= many - i; j++) { System.out.print(" "); } for (int k = 1; k <= 2 * i - 1; k++) { System.out.print("*"); } System.out.println(); } for (int i = 1; i <= little; i++) { for (int j = 1; j <= i; j++) { System.out.print(" "); } for (int k = 1; k <= totalRow - 2 * i; k++) { System.out.print("*"); } System.out.println(); } } private static void exercise3() { // * // *** // ***** // ******* // ***** // *** // * int totalRow = 11; int little = totalRow / 2;//4 int many = little + 1;//5 int j = 1; for (int i = many - 1; i >= 0; i--) { for (; j <= totalRow; ) {// 5 7 9 int blank = 0; while (blank < i) { System.out.print(" "); blank++; } int star = 0; while (star < j) { System.out.print("*"); star++; } j += 2; break; } System.out.println(); } int j1 = totalRow - 2; for (int i = little - 1; i >= 0; i--) { for (; j1 > 0; ) { int blank = 0; while (blank < little - i) { System.out.print(" "); blank++; } int star = 0; while (star < j1) { System.out.print("*"); star++; } j1 -= 2; break; } System.out.println(); } } private static void exercise2() { //计算个税(图片见最后) double salary = 15000; double supDeE = salary - 3500; double taxRate = 0, num = 0; if (supDeE <= 1500 && supDeE > 0) { taxRate = 0.03; } else if (supDeE <= 4500 && supDeE >= 1501) { taxRate = 0.1; num = 105; } else if (supDeE <= 9000 && supDeE >= 4501) { taxRate = 0.2; num = 555; } else if (supDeE <= 35000) { taxRate = 0.25; num = 1005; } else if (supDeE <= 55000 && supDeE >= 35001) { taxRate = 0.3; num = 2755; } else if (supDeE <= 80000 && supDeE >= 55001) { taxRate = 0.35; num = 5505; } else if (supDeE > 80000) { taxRate = 0.45; num = 13505; } double tax = 0; if (supDeE > 0) { tax = (salary - 262 - 3500) * taxRate - num; } salary = salary - 262 - tax; System.out.println("需要缴纳个人所得税:" + tax); System.out.println("实际收入:" + salary); } private static void exercise1() { // 商场实行新的抽奖规则:会员号的百位数字等于产生的随机数字即为幸运会员。实现如下功能: // 1、从键盘接收4位数会员号 // 2、生成随机数 // 提示:int random = (int) (Math.random() * 10); // 3、算出会员号中在百位的数字号码 // 提示:int baiwei = custNo / 100 % 10; Scanner input = new Scanner(System.in); System.out.println("从键盘接收4位数会员号:"); int memberNo = input.nextInt(); if (memberNo < 1000 || memberNo >= 10000) { System.out.println("录入的会员号不合法"); return; } int random = (int) (Math.random() * 10); int baiWei = memberNo / 100 % 10; System.out.println("今日的幸运数字:" + random); if (random != baiWei) { System.out.println(memberNo + "不是今日幸运会员"); return; } System.out.println(memberNo + "是今日幸运会员"); input.close(); } }