Java 基础语法学完后很多人会陷入“看得懂、写不出”的困境知识点都认识真正拿到需求却不知从何下手。本文整理了九道经典综合练习题涵盖条件判断、循环、数组、方法封装和随机数应用每题都给出需求与完整可运行代码建议先自己动手写一遍再对照参考实现。题目一卖飞机票需求机票价格按照淡季旺季、头等舱和经济舱收费。按照如下规则计算机票价格旺季5-10月头等舱9折经济舱8.5折淡季11月到来年4月头等舱7折经济舱6.5折。package com.example; import java.util.Scanner; public class Demo{ public static void main(String[] args) { //输入机票原价、月份和头等舱或经济舱 Scanner snew Scanner(System.in); System.out.println(输入机票原价); double prices.nextDouble(); System.out.println(输入月份); int months.nextInt(); System.out.println(请选择0头等舱1经济舱); int seats.nextInt(); //分季节计算机票价格 if(month5month10){ //旺季 pricegetPrice(price,seat,0.9,0.85); }else if(month1month4 ||month1month12){ //淡季 pricegetPrice(price,seat,0.7,0.65); } System.out.println(打折之后票价为 price); } //根据舱位计算飞机价格 public static double getPrice(double price,int seat,double v0,double v1){ if(seat0){ price*v0; }else{ price*v1; } return price; } }题目二找质数需求判断 101-200 之间有多少个素数并输出所有素数。package com.example; public class Demo{ public static void main(String[] args) { int count0; //列出所有需要判断的数 for (int num 101; num 200; num) { //判断是否是素数 boolean flagtrue; for (int i 2; i Math.sqrt(num) ; i) { if(num%i0){ flagfalse; break; } } //打印所有素数 if(flag){ count; System.out.print(num ); } } System.out.println(\n素数个数为count); } }题目三开发验证码需求定义方法实现随机产生一个5位的验证码验证码格式长度为5前四位是大写字母或者小写字母最后一位是数字package com.example; import java.util.Random; public class Demo{ public static void main(String[] args) { String result; //用数组存储52个大小写英文字母 char[] chsnew char[52]; for (int i 0; i chs.length; i) { if(i25){ chs[i](char)(65i); }else{ chs[i](char)(97i-26); } } //拼出前四位验证码 Random r new Random(); for (int i 0; i 4; i) { int randomIndex r.nextInt(chs.length); result chs[randomIndex]; } //拼出最后一位验证码 result r.nextInt(10); System.out.println(result); } }题目四数组元素的复制需求把一个数组中的元素赋值到另一个新数组中去package com.example; public class Demo{ public static void main(String[] args) { int[] arr{1,2,3,4,5}; int[] newArrnew int[arr.length]; for (int i 0; i arr.length; i) { newArr[i]arr[i]; } for (int i 0; i newArr.length; i) { System.out.print(newArr[i] ); } } }题目五评委打分需求在唱歌比赛中有6名评委给选手打分分数范围是[0 - 100]之间的整数。选手的最后得分为去掉最高分、最低分后的4个评委的平均分请完成上述过程并计算出选手的得分。package com.example; import java.util.Scanner; public class Demo{ public static void main(String[] args) { int[] scoresArrgetScores(); int maxgetMax(scoresArr); int mingetMin(scoresArr); int sumgetSum(scoresArr); int result(sum-max-min)/(scoresArr.length-2); System.out.println(最终得分result); } //获取总分 public static int getSum(int[] scoresArr){ int sum0; for (int i 0; i scoresArr.length; i) { sumscoresArr[i]; } return sum; } //获取最小值 public static int getMin(int[] scoresArr) { int min scoresArr[0]; for (int i 1; i scoresArr.length; i) { if (scoresArr[i] min) { min scoresArr[i]; } } return min; } //获取最大值 public static int getMax(int[] scoresArr){ int maxscoresArr[0]; for (int i 1; i scoresArr.length; i) { if(scoresArr[i]max){ maxscoresArr[i]; } } return max; } //输入评委给选手打的分数 public static int[] getScores(){ Scanner snew Scanner(System.in); int[] scoresnew int[6]; for (int i 0; i scores.length; ) { System.out.println(请输入评委的打分); int scores.nextInt(); if(scores[i]0scores[i]100){ scores[i]score; i; }else{ System.out.println(超出打分范围请重新输入); } } return scores; } }题目六数字加密需求某系统的数字密码大于 0, 比如 1983采用加密方式进行传输。规则如下先得到每位数然后每位数都加上 5 再对10求余最后将所有数字反转得到一串新数。1 9 8 3 5 6 14 13 8 %10 6 4 3 8 反转 8 3 4 6 加密后的结果就是 8346package com.example; import java.util.Scanner; public class Demo{ public static void main(String[] args) { /*整数转化为数组*/ Scanner snew Scanner(System.in); System.out.println(输入要加密的数字:); int nums.nextInt(); //1.看num是几位数 int tempnum; int count0; while(num!0){ num/10; count; } //2.把整数里面的每一数字放到数组当中 int[] arrnew int[count]; for (int i arr.length-1; i 0; i--) { int getemp%10; temptemp/10; arr[i]ge; } /*加密处理*/ //1.每位数5 for (int i 0; i arr.length; i) { arr[i]5; } //2.每位数取余 for (int i 0; i arr.length; i) { arr[i]arr[i]%10; } //3.反转数组 for (int i 0,jarr.length-1; ij; i,j--) { temparr[i]; arr[i]arr[j]; arr[j]temp; } //4.把数组转为数字 for (int i 0; i arr.length; i) { numnum*10arr[i]; } System.out.println(加密之后的结果是\nnum); } }题目七数字解密8 3 4 6 反转 6 4 3 8 ??? 6 14 13 8 -5 1 9 8 3 解密后的结果就是 19835 6 7 8 9 10 11 12 13 145 6 7 8 9 0 1 2 3 4package com.example; public class Demo{ public static void main(String[] args) { int[] arr{8,3,4,6}; //反转数组 for (int i 0,jarr.length-1; i j; i,j--) { int temparr[i]; arr[i]arr[j]; arr[j]temp; } //加密时取余解密时寻找规律 //0-4要105-9不做任何处理 for (int i 0; i arr.length; i) { if (arr[i]0arr[i]4){ arr[i]10; } } //-5 for (int i 0; i arr.length; i) { arr[i]-5; } //将数组变成数字 int num0; for (int i 0; i arr.length; i) { num num * 10 arr[i]; } //输出打印 System.out.println(num); } }题目八抢红包需求一个大V直播抽奖奖品是现金红包分别有{2, 588, 888, 1000, 10000}五个奖金。请使用代码模拟抽奖打印出每个奖项奖项的出现顺序要随机且不重复。方法一在本数组中随机打乱package com.example; import java.util.Arrays; import java.util.Random; public class Demo{ public static void main(String[] args) { int[] arr{2,588,1000,10000}; Random rnew Random(); for (int i 0; i arr.length; i) { int randomIndex r.nextInt(arr.length); int temparr[i]; arr[i]arr[randomIndex]; arr[randomIndex]temp; } System.out.println(Arrays.toString(arr)); } }方法二随机打乱到一个新数组里package com.example; import java.util.Arrays; import java.util.Random; public class Demo{ public static void main(String[] args) { int[] arr{2,588,1000,10000}; int[] newArrnew int[arr.length]; Random rnew Random(); for (int i 0; i arr.length;) { int randomIndexr.nextInt(arr.length); int prizearr[randomIndex]; boolean flagcontains(prize,newArr); if(flag){ newArr[i]prize; i; } } System.out.println(Arrays.toString(newArr)); } public static boolean contains(int prize,int[] newArr){ for (int i 0; i newArr.length; i) { if (prizenewArr[i]){ return false; } } return true; } }题目九双色球系统投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择蓝色球号码从1—16中选择。双色球中奖条件和奖金表奖等中奖条件红球中奖条件蓝球中奖说明单注奖金分配一等奖●●●●●● (6个)● (1个)中61最高1000万二等奖●●●●●● (6个)中60最高500万三等奖●●●●● (5个)● (1个)中513000元四等奖●●●●● (5个)中50200元●●●● (4个)● (1个)中41五等奖●●●● (4个)中4010元●●● (3个)● (1个)中31六等奖●● (2个)● (1个)中215元● (1个)● (1个)中11● (1个)中01package com.example; import java.util.Arrays; import java.util.Random; import java.util.Scanner; public class Demo{ public static void main(String[] args) { System.out.println(中奖号码为); int[] arrwinNum(); System.out.println(Arrays.toString(arr)); int[] newArrselectNum(); System.out.println(Arrays.toString(newArr)); int redCountgetRed(arr,newArr); boolean blueFlag isBlue(arr,newArr); if(blueFlag){ if(redCount0redCount2){ System.out.println(恭喜你获得六等奖奖金5元); } else if (redCount3) { System.out.println(恭喜你获得五等奖奖金10元); } else if (redCount4) { System.out.println(恭喜你获得四等奖奖金200元); } else if (redCount5) { System.out.println(恭喜你获得三等奖奖金3000元); } else if (redCount6) { System.out.println(恭喜你获得一等奖奖金1000万元); } }else{ if(redCount6){ System.out.println(恭喜你获得二等奖奖金500万元); } else if (redCount5) { System.out.println(恭喜你获得四等奖奖金200元); } else if (redCount4) { System.out.println(恭喜你获得五等奖奖金10元); } } } //蓝球是否中奖 private static boolean isBlue(int[] arr, int[] newArr){ if(arr[arr.length-1]!newArr[arr.length-1]){ return false; } return true; } //红球中奖个数 private static int getRed(int[] arr,int[] newArr){ int redCount0; for (int i 0; i newArr.length-1; i) { for (int j 0; j arr.length-1; j) { if(newArr[i] arr[j]){ redCount; } } } return redCount; } //用户进行输入双色球号码 private static int[] selectNum() { int[] newArrnew int[7]; Scanner snew Scanner(System.in); for (int i 0; i newArr.length-1; ) { System.out.println(请输入六个红球号码1-33); int nums.nextInt(); boolean flagnotContains(num,newArr); if(num1num33flag){ newArr[i]num; i; }else{ System.out.println(输入的号码错误请重新输入); } } System.out.println(请输入一个蓝球号码1-16); int nums.nextInt(); if (num1num16){ newArr[6]num; }else{ System.out.println(输入的号码错误请重新输入); } return newArr; } //中奖号码 private static int[] winNum() { int[] arrnew int[7]; Random rnew Random(); for (int i 0; i arr.length-1; ) { int red r.nextInt(33)1; boolean flag notContains(red, arr); if(flag){ arr[i]red; i; } } int bluer.nextInt(16)1; arr[6]blue; return arr; } public static boolean notContains(int num,int[] arr){ for (int i 0; i arr.length; i) { if(numarr[i]){ return false; } } return true; } }总结九道题从条件判断、循环控制到数组操作、方法封装再到随机数应用和业务逻辑模拟基本覆盖了 Java 基础阶段的核心能力。做完之后可以回头对照卖飞机票和找质数练的是分支与循环验证码和抢红包练的是随机数与去重评委打分和双色球练的是方法拆分与数组综合运用数字加解密则考验对取余、反转等细节的把握。建议把每道题都独立写一遍再尝试改造需求比如把验证码长度改成可配置、把双色球改成多注投注这样才算真正把基础打牢。