Java学习笔记2024/2/5
综合练习题
练习一:飞机票
需求:
机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
package com.angus.comprehensiveExercise; import java.util.Scanner; public class test1 { public static void main(String[] args) { //需求: // //• 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 // //• 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。 //输入机票原价、月份和头等舱或经济舱 Scanner scanner = new Scanner(System.in); System.out.println("请输入机票原价"); int price0 = scanner.nextInt(); System.out.println("请输入月份:1~12"); int month = scanner.nextInt(); System.out.println("请输入头等舱: 0或经济舱: 1"); int vip = scanner.nextInt(); int price = 0; //旺季(5-10月) if (month >= 5 && month <= 10) { //头等舱9折,经济舱8.5折 price = getPrice(vip, price, price0, 0.9, 0.85); // price = getPrice(price0,0,0.9,0.85); } else if ( (month >= 11 && month <= 12) || (month >=1 && month <=4) ) { //淡季(11月到来年4月) //头等舱7折,经济舱6.5折 price = getPrice(vip, price, price0, 0.7, 0.65); // price = getPrice(price0,vip,0.7,0.65); } else { System.out.println("请输入正确的月份"); } System.out.println("最终价格为:" + price); System.out.println("^^"); } //卧槽这个抽取方法碉堡了 public static int getPrice(int vip, int price, int price0, double x, double x1) { if (vip == 0) { price = (int) (price0 * x); } else if (vip == 1) { price = (int) (price0 * x1); } else { System.out.println("只能输入数字0或1"); } return price; } // 1.干啥?把重复性代码变为一个方法,根据原价,两个折扣和vip座位来计算最终结果 // 2.需要啥?原价,vip座位,两个折扣 // 3.返回否?返 // public static int getPrice(int price0,int vip,double vip0,double vip1) { // int price = 0; // if (vip == 0) { // price = (int)(price0 * vip0); // } else if (vip == 1) { // price = (int)(price0 * vip1); // } else { // System.out.println("只能输入数字0或1"); // } // // return price; // } } //显示方法形参快捷键 -> Ctrl + P //自动抽取方法快捷键 -> Ctrl + Alt + M
练习二:打印素数
判断101~200之间有多少个素数,并输出所有素数。
备注:素数就是质数
package com.angus.comprehensiveExercise; public class test2 { public static void main(String[] args) { //判断101~200之间有多少个素数,并输出所有素数。 //备注:素数就是质数 //思路一:判断1~这个数之间有没有数能够整除这个数,有就false,无就true,然后加个循环修改一下 //思路二:简化思路一,不然次数太多效率太低,判断1~这个数之间有没有数能够整除这个数的平方根,有就false,无就true //使用思路一,还没学会用一行代码求出这个数的平方根 //先判断7是不是一个素数 //2~6看看有没有能整除7 int count = 0; for (int i = 101; i <= 200; i++) { boolean flag = true; //flag要放在里面,不然只执行一次,flag的true就没了 for (int j = 2; j < i; j++) { if (i % j == 0){ flag = false; break; } } if (flag) { System.out.println(i + "是素数"); count++; } } System.out.println("有" + count + "个"); System.out.println("^^"); } }