Java常见练习实验小程序

Java —— 小程序

            • 1. 闰年的判断 & 成绩等级判断
            • 2. 数的正负零值 & 月份天数
            • 3. 随机算数题 & 乘法口诀表 & 随机数的最大值最小值
            • 4. 猜数字 & 随机验证码 & 2~100的素数
            • 5. 机票打折 & 评委打分
            • 6. 学生类Student & 汽车类Car
            • 7. 后缀名截取 & 控制用户名输入 & 域名获取公式名 & 字符数组验证码

1. 闰年的判断 & 成绩等级判断
闰年判断:判断公式
    ① 4年一闰,百年不闰(即能被4整除,且不能被100整除)
    ② 400年再闰(即能被400整除)
成绩判断:成绩等级划分
    ① 成绩的合理性 🢂 高于最低分,低于最高分(一般 分数>0&分数<100)
    ② 等级划分(优秀,良好,合格,不及格)

🢆 代码演示 ▶⯈⮞

package test;public class CodeTiny01 {public static void main(String[] args) {/*判断公式:① 4年一闰,百年不闰(即能被4整除,且不能被100整除② 400年再闰(即能被400整除)*/int year = 2000;if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {System.out.println(year + "是闰年");} else {System.out.println(year + "是平年");}/*成绩等级判断① 成绩的合理性 🢂 高于最低分,低于最高分(一般 分数>0&分数<100)② 等级划分(优秀,良好,合格,不及格)*/int score = 95;if (score < 0 || score > 100) {System.out.println("F-成绩不合法");} else if (score >= 90) {System.out.println("A-优秀");} else if (score >= 80) {System.out.println("B-良好");} else if (score >= 60) {System.out.println("C-合格");} else {System.out.println("D-不及格");}}
}
2. 数的正负零值 & 月份天数
正负零值:判断规则
    ① 正数打印 "+"
    ② 负数打印 "-"
    ③ 0 则打印 "0"
月份天数:成绩等级划分
    ① 1,3,5,7,8,10,12(一个月31天)
    ② 4,6,9,11(一个月30天)
    ③ 2(闰年29天,平年28天)

🢆 代码演示 ▶⯈⮞

package test;import java.util.Scanner;public class CodeTiny02 {public static void main(String[] args) {/*判断一个数的正负零值① 正数打印 "+"② 负数打印 "-"③ 0 则打印 "0"*/Scanner scan = new Scanner(System.in);System.out.println("请输入一个整数:");int num = scan.nextInt();if(num>0){System.out.println("+");}else if(num<0){System.out.println("-");}else{System.out.println("0");}/*更据年份year和月份month,计算该年该月的天数① 1,3,5,7,8,10,12(一个月31天)② 4,6,9,11(一个月30天)③ 2(闰年29天,平年28天)*/System.out.println("请输入年份:");int year = scan.nextInt();System.out.println("请输入月份:");int month = scan.nextInt();int days = 0;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:days = 31;break;case 4:case 6:case 9:case 11:days = 30;break;case 2:if((year%4==0 && year%100!=0) || year%400==0){days = 29;}else{days = 28;}}System.out.println(year+"年的"+month+"月共"+days+"天");}
}
3. 随机算数题 & 乘法口诀表 & 随机数的最大值最小值
算术题:出题规则
    ① 1,2,3,4类分别为加,减,乘,除四类题目
    ② 除法计算时四舍五入保留一位小数
    ③ 每次随机10道题(手动输入数的最大范围)
乘法口诀:以正常乘法口诀表输出(下三角)
随机数的最大值最小值:随机生成10个数,求出最大值和最小值

🢆 代码演示 ▶⯈⮞

package test;import java.text.DecimalFormat;
import java.util.Random;
import java.util.Scanner;public class CodeTiny03 {public static void main(String[] args) {/** 随机题*/Random random = new Random();Scanner scanner = new Scanner(System.in);// 随机运算出题int score = 0;System.out.print("请输入第一个数最大范围:");int num = scanner.nextInt();System.out.print("请输入第二个数最大范围:");int number = scanner.nextInt();// 错题统计int f = 1;// 四舍五入保留一位小数decimalFormat.format(number);DecimalFormat decimalFormat = new DecimalFormat("#.#");for (int a = 1; a <= number; a++) {double n = random.nextInt(num);// 0不作除数double m = random.nextInt(10) + 1;// 随机类型出题int types = random.nextInt(4) + 1;double result = 0.0;// 除法结果switch (types) {case 1:System.out.printf("第%d题 题目:%s + %s = ?  ", a, decimalFormat.format(n), decimalFormat.format(m));result = n + m;break;case 2:System.out.printf("第%d题 题目:%s - %s = ?  ", a, decimalFormat.format(n), decimalFormat.format(m));result = n - m;break;case 3:System.out.printf("第%d题 题目:%s × %s = ?  ", a, decimalFormat.format(n), decimalFormat.format(m));result = n * m;break;case 4:System.out.printf("第%d题 题目:%s ÷ %s = ?  ", a, decimalFormat.format(n), decimalFormat.format(m));result = Double.parseDouble(decimalFormat.format((n / m)));break;}System.out.print("请输入当前题目的答案:");double answer = scanner.nextDouble();if (result == answer) {System.out.println("恭喜你答对了!");score += 10;System.out.println("当前得分:" + score);} else {f += 1;System.out.println("哦!答错了哟,别灰心继续答下一个题");System.out.println("正确答案:" + result);System.out.println("f=" + f + "n=" + number);if (f > number) {System.out.println("最后一题正确答案:" + result);System.out.println("哦!竟然一个题都没答对");}}}System.out.println("本次得分:" + score);/** 乘法口诀表*/for (int x = 1; x <= 9; x++) {//控制行for (int i = 1; i <= x; i++) {//控制列,\t表示制表位,占8位System.out.print(i + "*" + x + "=" + i * x + "\t");}//换行功能System.out.println();}/** 随机数的最大值,最小值*/int[] arr = new int[10];for(int i=0;i<arr.length;i++){arr[i] = (int)(Math.random()*100);System.out.println(arr[i]);}int max = arr[0];int min = arr[0];for(int i=1;i<arr.length;i++){if(arr[i]>max){max = arr[i];}if(arr[i]<min){min = arr[i];}}System.out.println("最大值:"+max+",最小值:"+min);}
}
4. 猜数字 & 随机验证码 & 2~100的素数
猜数字:随机生成一个数(目标值),根据每次输入提示,猜出该数字
    ① 当输入的数大于目标值,则提示猜大了
    ② 当输入的数小于目标值,则提示猜小了,逐渐逼近目标值
验证码:模拟生成随机验证码
    ① 选择需要生成的验证码长度
    ② 随机生成大小写字母及数字组成的验证码
素数:只有0和1两个因数的数

🢆 代码演示 ▶⯈⮞

package test;import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;public class CodeTiny04 {private static final Random random = new Random();private static final Scanner scanner = new Scanner(System.in);public static void main(String[] args) {// 猜数字guessNumber();// 验证码String code = verificationCode(6);System.out.println("生成的验证码:" + code);// 素数prime();}/*** =================================================================================================================* 案例:猜数字游戏* java:while(true)死循环,break*/public static void guessNumber() {// 目标值int hide = random.nextInt(100) + 1;System.out.println("目标值:" + hide);// 正确值double num = 0.0;double sum;// 循环猜数while (true) {num += 1;System.out.println("请输入要猜的数:");int guess = scanner.nextInt();if (hide < guess) {System.out.println("猜大了哦!");} else if (hide > guess) {System.out.println("猜小了哦!");} else {sum = 1 / num;System.out.println("正确率:" + precent(sum, 1));System.out.println("恭喜你,猜对了哟!");break;}}}/*** 将浮点数转化为百分比字符串输出** @param number 需要转化的浮点数* @param n      需要保留的小数位数* @return 转化后的字符串形式*/public static String precent(double number, int n) {String pre = String.format("%." + n + "f%%", number * 100);return pre;}// =================================================================================================================/*** =================================================================================================================* 生成验证码:A~Z,a~z,0~9** @param number 验证码长度* @return 验证码字符串*/public static String verificationCode(int number) {// 储存验证码String code = "";// 字符数组char[] captchaChars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J','K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T','U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd','e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n','o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x','y', 'z'};for (int i = 0; i < number; i++) {// 生成随机下标int index = random.nextInt(captchaChars.length);// 验证码拼接code += captchaChars[index];}return code;}// =================================================================================================================/*** =================================================================================================================* 查找2~100之间的素数*/public static void prime() {for (int i = 2; i <= 100; i++) {boolean flag = true;for (int j = 2; j < i / 2; j++) {if (i % j == 0) {flag = false;break;}}if (flag) {System.out.print(i + "\t");}}}// =================================================================================================================
}
5. 机票打折 & 评委打分
机票打折:机票在不同时段的打折力度不同(分淡季和旺季)
    ① 淡季:11月到次年4月(经济舱6折,商务舱65折,头等舱7折)
    ② 旺季:5月到10月(经济舱8折,商务舱85折,头等舱9折)
评委打分:多位评委给选手打分
    ① 最终得分:去掉一个最高分和最低分的平均分
    ② 分支语句 + 循环语句 + 数组 + 方法

🢆 代码演示 ▶⯈⮞

package test;import java.util.Arrays;
import java.util.Scanner;public class CodeTiny05 {private static final Scanner scanner = new Scanner(System.in);public static void main(String[] args) {// 机票打折System.out.print("请输入机票原价(大于0):");double prince = scanner.nextInt();System.out.print("请输入月份(1~12):");int month = scanner.nextInt();System.out.print("请输入舱位类型(1:经济舱 2:商务舱 3:头等舱):");int type = scanner.nextInt();System.out.println("您的本次机票价格为:" + discount(prince, month, type));// 评委打分System.out.print("请选择本次大赛的评委数(评委数量不得低于3人也不能大于10人):");int n = scanner.nextInt();if (n >= 3 && n <= 10) {System.out.println("选手最终得分:" + avgScore(scoreArr(n)));} else {System.out.println("评委数量有误!");}}/*** =================================================================================================================* 打折计算** @param prince 价格* @param month  月份* @param type   舱位* @return 打折后的价格*/public static double discount(double prince, int month, int type) {// 数据验证boolean check = checkData(prince, month, type);double finalPrice = 0.0;if (check) {finalPrice = princes(prince, month, type);}return finalPrice;}/*** 验证输入的数据是否合法** @param prince 价格数据* @param month  月份数据* @param type   类型数据(舱位)* @return 是否有效*/public static boolean checkData(double prince, int month, int type) {boolean isValid = true;if (prince < 0) {System.out.println("您输入的价格有误!");isValid = false;}if (month <= 0 || month > 12) {System.out.println("您输入的月份有误!");isValid = false;}if (type < 0 || type > 3) {System.out.println("您输入的舱位类型有误!");isValid = false;}return isValid;}/*** 最终价格** @param price 价格* @param month 月份* @param type  类型(舱位)* @return 最终价格*/public static double princes(double price, int month, int type) {double finalPrice = 0.0;switch (type) {case 1:if (month >= 5 && month <= 10) {finalPrice = price * 0.8;} else {finalPrice = price * 0.6;}break;case 2:if (month >= 5 && month <= 10) {finalPrice = price * 0.85;} else {finalPrice = price * 0.65;}break;case 3:if (month >= 5 && month <= 10) {finalPrice = price * 0.9;} else {finalPrice = price * 0.7;}break;default:System.out.println("输入有误!");break;}return finalPrice;}// =================================================================================================================/**=================================================================================================================* 评委打分* @param num 评委人数* @return 评委打分的数组*/public static double[] scoreArr(int num) {System.out.println("本次大赛评委数:" + num);// 存储分数double[] scores = new double[num];boolean flag = true;while (flag) {for (int i = 0; i < scores.length; i++) {System.out.println("请第" + (i + 1) + "个评委打分(1~10分):");double score = scanner.nextDouble();if (score >= 0.0 && score <= 10.0) {scores[i] = score;} else {System.out.println("请评委老师认真打分!");flag = false;i -= 1;}}break;}return scores;}/*** 平均得分* @param scores 输入数组分数* @return 最终得分*/public static double avgScore(double[] scores) {double avg = 0.0;Arrays.sort(scores);// 不统计最低分和最高分for (int i = 1; i < scores.length - 1; i++) {avg += scores[i];}System.out.println(Arrays.toString(scores));return avg / (scores.length - 2);}// =================================================================================================================
}

在这里插入图片描述

6. 学生类Student & 汽车类Car
学生类Student:java面向对象的简单应用
    ① 学生类(属性:姓名,年龄,班级,学号)
    ② 测试类(对学生类的简单测试,访问成员变量方法等)
汽车类Car:java面向对象的简单应用
    ① 汽车类(品牌,颜色,价格)
    ② 测试类(对学生类的简单测试,访问成员变量方法等)

🢆 代码演示 ▶⯈⮞

package working;// 测试类
public class Work06 {public static void main(String[] args) {// 利用无参构造方法创建类的对象(周瑜,陆游)Student zy = new Student();// 访问成员变量zy.name = "周瑜";zy.age = 24;zy.className = "2023001";zy.stuId = "20001";// 访问成员方法zy.study();zy.sayHi();zy.playWith("李白");// 利用有参构造创建对象Student ly = new Student("陆游", 25, "2023002", "20002");// 访问成员方法ly.study();ly.sayHi();ly.playWith("李白");}
}// 创建Student类
class Student{// 成员变量String name;int age;String className;String stuId;// 无参构造方法Student() {}// 有参构造方法Student(String name, int age, String className, String stuId) {this.name = name;this.age = age;this.className = className;this.stuId = stuId;}// 成员方法void study() {// 成员方法调用成员变量时,默认在成员变量之前有this关键字(this.name)System.out.println(name + "在学习java编程语言");}void sayHi() {System.out.println("你好,我叫" + name + "今年" + age + "岁," + "在" + className + "班" + "学号为" + stuId);}// 有参数的成员方法void playWith(String anotherName){System.out.println(name + "和" + anotherName + "正在打篮球!");}
}
package working;public class Work07 {public static void main(String[] args) {// 类的实例化Car ford = new Car();ford.brand = "福特";ford.color = "红色的";ford.price = 210000;ford.start();ford.run();ford.stop();Car mazda = new Car("马自达", "白色的", 190000);mazda.start();mazda.run();mazda.stop();}
}class Car {// 成员变量String brand;String color;double price;// 无参构造Car() {}// 有参构造Car(String brand, String color, double price) {this.brand = brand;this.color = color;this.price = price;}// 成员方法void start() {System.out.println(brand + "汽车正在启动!");}void run() {System.out.println("价值" + price + "¥的" + color + brand + "开始加速了");}void stop(){System.out.println(brand + "终于停下来了");}
}
7. 后缀名截取 & 控制用户名输入 & 域名获取公式名 & 字符数组验证码

🢆 代码演示 ▶⯈⮞ 获取给定文件名中的后缀名部分

package work;public class Work01 {public static void main(String[] args) {// 截取png字符串String logo = "logo.png";// 截取js字符串String jquery = "jquery.1.1.2.js";System.out.println("截取后的字符串:" + getExtByName(logo));System.out.println("截取后的字符串:" + getExtByName(jquery));}/*** 获取给定文件名中的后缀名部分* @param name	文件名* @return 返回截取的字符串*/public static String getExtByName(String name) {int start = name.lastIndexOf(".") + 1;int end = name.length();return name.substring(start, end);}
}

🢆 代码演示 ▶⯈⮞ 用户在控制台输入自己的用户名,然后验证

package work;import java.util.Scanner;/*** 要求用户在控制台输入自己的用户名。* 然后要求做如下验证工作:* 1:用户名不能为空(只要有一个字符)* 2:用户名必须在20个字以内* @author LongYongchuan*/
public class Work02 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入名字:");System.out.println(getName(scanner.nextLine()));}/*** 判断用户输入的名字是否合法* @param name 输入的名字* @return 合法的名字*/public static String getName(String name) {// 防止空格字符,现将空格去除if (name == null || name.trim().isEmpty() || name.length() >= 20) {System.out.println("您输入的名字不符合规则");name = "";}return name;}
}

🢆 代码演示 ▶⯈⮞ 域名判断是百度(baidu)或其他(输出判断结果)

package work;import java.util.Scanner;/*** 用户输入一个网址,格式如: www.baidu.com* 根据域名判断是百度(baidu)或其他(输出判断结果)* @author LongYongchuan*/
public class Work05 {public static void main(String[] args) {System.out.print("请输入一个网址:");Scanner scanner = new Scanner(System.in);String line = scanner.nextLine();System.out.println("您输入的网址:" + line);//截取域名int start = line.indexOf(".") + 1;int end = line.indexOf(".", start);String name = line.substring(start, end);System.out.println(start + name + end);//判断域名if ("baidu".equals(name) {System.out.println("这是百度网站");} else {System.out.println("这是其他网站");}}
}

🢆 代码演示 ▶⯈⮞ 验证码的验证

package work;import java.util.Random;
import java.util.Scanner;/*** 生成一个4位验证码(数字和字母的组合)* 输出到控制台并提示用户输入该验证码(让用户输入,忽略大小写)* 输出:验证码正确,否则输出:验证码错误* @author LongYongchuan*/
public class Work06 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String codes = code(6);System.out.println("本次验证码:" + codes);System.out.print("请输入验证码:");if (codes.equalsIgnoreCase(scanner.nextLine())){System.out.println("验证码正确");}else {System.out.println("验证码错误");}}/*** 随机生成验证码* @param n 验证码的长度* @return 随机验证码*/public static String code(int n){Random random = new Random();String codes = "";String line = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";for (int i = 0; i < n; i++) {char c = line.charAt(random.nextInt(line.length() + 1));codes += c;}return codes;}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部