组成所有的排列后再 去 掉不满足条件的排列。 */ public static void main(String[] args) { // TODO Auto-generated method stub int ct = 0; for (int i = 1; i < 5; i++) { for (int j = 1; j < 5; j++) { if (i == j) continue; for (int k = 1; k < 5; k++) { if (j == k || i == k) continue; ct++; System.out.print((i * 100 + j * 10 + k) + " "); } } } System.out.println("\n共有:" + ct + "个不同的三位数。"); } } 13 【程序12】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提 10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10 万元的部分, 可可提成7.5%; 20万到40万之间时, 高于20万元的部分, 可提成5%; 40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60 万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键 盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 import java.util.Scanner; public class PrizeCommision { /** * 【程序12】 * 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10 * %提成, * 高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成 5%;40万到60万之间时高于40万元的部分,可提成3 * %;60 * 万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元 的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? * 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 */ public static void main(String[] args) { // TODO Auto-generated method stub long profit; long prize; Scanner sc=new Scanner(System.in); while(true){ System.out.println("请输入利润:"); profit=sc.nextLong(); if(profit>0)break; } if(profit<=100000){ prize=(long) (profit*.1); }else if(profit<=200000){ prize=(long) (100000*.1+(profit-100000)*.075); }else if(profit<=400000){ prize=(long) (100000*.1+100000*.075+(profit-200000)*.05); }else if(profit<=600000){ prize=(long) 14 (100000*.1+100000*.075+200000*.05+(profit-400000)*.03); }else if(profit<=1000000){ prize=(long) (100000*.1+100000*.075+200000*.05+200000*.03+(profit-600000)*.015); }else { prize=(long) (100000*.1+100000*.075+200000*.05+200000*.03+400000*.015+(profit-1000 000)*.01); } System.out.println("你应该得到的奖金为:"+prize); } } 【程序 13】 题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平 方数,请问该数是多少? 1.程序分析: 10 万以内判断, 在 先将该数加上 100 后再开方, 再将该数加上 268 后再开方,如果开方后的结果满足如下条件,即是结果。 public class SquareNumber { /** * 【程序13】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完 全平方数,请问该数是多少? * 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开 方,如果开方后的结果满足如下条件,即是结果。 */ public static void main(String[] args) { // TODO Auto-generated method stub for (int i = 1; i < 100000001; i++) { int sq1 = (int) Math.sqrt(i + 100); int sq2 = (int) Math.sqrt(i + 268); if ((i + 100) == sq1 * sq1 && (i + 268) == sq2 * sq2) System.out.println(i); } } } 【程序14】 题目:输入某年某月某日,判断这一天是这一年的第几天? 15 1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本 年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。 import java.util.Scanner; public class YearMonthDays { /** * 【程序14】 题目:输入某年某月某日,判断这一天是这一年的第几天? * 1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第 几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。 */ public static void main(String[] args) { // TODO Auto-generated method stub int[] days = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int year, month, day; Scanner sc = new Scanner(System.in); while (true) { System.out.println("请输入一个正整数作为年份:"); year = sc.nextInt(); if (year > 0) break; } while (true) { System.out.println("请输入一个1~12之间的整数作为月份:"); month = sc.nextInt(); if (month > 0 && month < 13) break; } if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) days[1] = 29; while (true) { System.out.println("请输入一个1" + "~" + days[month - 1] + " 之间的整数作为号数:"); day = sc.nextInt(); if (day > 0 && day <= days[month - 1]) break; } int sum = day; for (int i = 0; i < month - 1; i++) sum += days[i]; System.out.println(year + "年" + month + "月" + day + "日是今年的 第" + sum + "天。"); 16 } } 【程序15】 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将 x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换, 这样能使x最小。 import java.util.Scanner; public class CompareTheSizeOf { /* * 【程序15】 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 * 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y 的值进行交换 * ,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 */ public static void main(String[] args) { float a,b,c,temp; Scanner sc=new Scanner(System.in); System.out.println("请输入三个实数(在同一行时,用空格分开):"); a=sc.nextFloat(); b=sc.nextFloat(); c=sc.nextFloat(); if(a>b){ temp=a; a=b; b=temp; } if(b>c){ temp=b; b=c; c=temp; } if(a>b){ temp=a; a=b; b=temp; } System.out.println(a+" <= "+b+" <= "+c); } } 17 【程序16】 题目:输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 public class NineNineTable { /** * 【程序16】 题目:输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行, j控制列。 */ public static void main(String[] args) { // TODO Auto-generated method stub String s; for (int i = 1; i < 10; i++) { for (int j = 1; j <= i; j++) { s = i + "*" + j + "=" + i * j + " System.out.print(s.substring(0, 9)); } System.out.println(); } } } "; 【程序17】 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又 多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早 上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃 子了。求第一天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。 public class MonkeyEatingPeach { /** * 【程序17】 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不 瘾,又多吃了一个 * 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 * 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 1.程序分析:采取逆向思维的方法,从后往前推断。 * 此程序包含验证!!! */ public static void main(String[] args) { // TODO Auto-generated method stub 18 int a = 1; for (int i = 1; i < 10; i++) { a = 2 * (a + 1); } System.out .println("一共有:" + a + "个桃子! \n=================================================================== ======="); // 以下为验证: int b = a; int i = 1; while (b != 1) { b = a / 2 - 1; System.out.println("第" + (i++) + "天,猴子吃了:" + (a / 2 + 1) + "个桃子;还剩下" + b + "个桃子(和为:" + (a / 2 + 1 + b) + ",是头一天所剩的桃子数)。"); a = b; } System.out .println("======================================================= ===============\n第" + i + "天,剩下的桃子数为:" + a + "个。"); } } 【程序18】 题目: 两个乒乓球队进行比赛, 各出三人。 甲队为a,b,c三人, 乙队为x,y,z三人。 已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和 x,z比,请编程序找出三队赛手的名单。 public class PingpongGame { /** * 【程序18】 * 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已 抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比 * ,c说他不和x,z比,请编程序找出三队赛手的名单。 */ public static void main(String[] args) { 19 // TODO Auto-generated method stub char[] a = { 'a', 'b', 'c' }; char[] b = { 'x', 'y', 'z' }; int ct=0; for (int i = 0; i < a.length; i++) { for (int j = 0; j < b.length; j++) { if (i == 0 && j == 0) continue; if ((i == 2 && j == 0) || (i == 2 && j == 2)) continue; System.out.println(a[i] + " : " + b[j]); ct++; } } System.out.println("一共有:"+ct+"场乒乓比赛!"); } } 【程序19】 题目:打印出如下图案(菱形) * *** ***** ******* ***** *** * 1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律, 利用双重 for循环,第一层控制行,第二层控制列。 public class DiamontPattern { /** * 【程序19】 题目:打印出如下图案(菱形) * *** ***** ******* ***** *** * * 1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双 20 重 for循环,第一层控制行,第二层控制列。 */ public static void main(String[] args) { // TODO Auto-generated method stub StringBuffer preBlank; StringBuffer star; int tmp; for (int i = 1; i < 8; i++) { preBlank = new StringBuffer( " star = new StringBuffer(); if (i < 5) tmp = i; else tmp = 8 - i; for (int j = 1; j < 2 * tmp; j++) { if (j % 2 != 0) preBlank.deleteCharAt(0); star.append('*'); } System.out.print(preBlank); System.out.println(star); } } } "); 【程序20】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20项之和。 1.程序分析:请抓住分子与分母的变化规律。 public class FractionSeries { /** * 【程序20】 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这 个数列的前20项之和。 * 1.程序分析:请抓住分子与分母的变化规律。 */ public static void main(String[] args) { // TODO Auto-generated method stub double fz = 2.; double fm = 1.; 21 double he; double sum = fz / fm; System.out.print((int) fz + "/" + (int) fm); for (int i = 1; i < 20; i++) { he = fz + fm; fm = fz; fz = he; sum += fz / fm; System.out.print(" + " + (int) fz + "/" + (int) fm); } System.out.println(" = " + sum); } } 【程序21】 题目:求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。 public class FactorialAddSum { /** * 【程序21】 题目:求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成 了累乘。 */ public static void main(String[] args) { // TODO Auto-generated method stub long t = 1; long sum = 1; String s = "1!"; for (int i = 2; i < 21; i++) { t *= i; sum += t; s += " + " + i + "!"; } System.out.println(s + " = " + sum); } } 22 【程序22】 题目:利用递归方法求5!。 1.程序分析:递归公式:fn=fn_1*4! import java.util.Scanner; public class FactorialRecursive { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n; while (true) { System.out.println("请输入一个非负整数:"); if (0 <= (n = sc.nextInt())) break; } System.out.println(n + "! = " + factorial(n)); } private static long factorial(int n) { if (n == 0) { return 1l; } else { return factorial(n - 1) * n; } } } 【程序23】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人 岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说 比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个 人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。 public class CalcAge { /** * 【程序23】 * 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数, 23 他说比第3个人大2岁。问第三个人,又说比第2人大两岁。 * 问第2个人, 说比第一个人大两岁。 最后问第一个人, 他说是10岁。 请问第五个人多大? * 1.程序分析: 利用递归的方法, 递归分为回推和递推两个阶段。 要想知道第五个人岁数, 需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。 */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("第五个人的年龄是:" + calcAge(5)); } private static int calcAge(int n) { if (n == 1) return 10; else return calcAge(n - 1) + 2; } } 【程序24】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出 各位数字。 import java.util.Scanner; public class OfNumbersReverse { /** * 【程序24】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打 印出各位数字。 */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); long n; while (true) { System.out.println("请输入一个不多于5位的正整数:"); n = sc.nextLong(); if (n > 0 && n < 100000) break; } String s = "" + n; System.out.println(s + "是" + s.length() + "位数;\n其反序输出结果 为:"); for (int i = s.length(); i > 0; i--) { 24 System.out.print(s.charAt(i - 1)); } } } 【程序25】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同, 十位与千位相同。 public class ReturnText { /** * 【程序25】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位 相同,十位与千位相同。 */ public static void main(String[] args) { // TODO Auto-generated method stub int ct = 0; for (int i = 10000; i < 100000; i++) { if (isReturnText("" + i)) { System.out.println(i); ct++; } } System.out.println("在10000~99999之间共有:" + ct + "个回文数。"); } private static boolean isReturnText(String s) { char[] ch = s.toCharArray(); if (ch[0] == ch[4] && ch[1] == ch[3]) { return true; } else { return false; } } } 【程序26】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样, 则继续 判断第二个字母。 1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if 25 语句判断第二个字母。 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class FindWeek { /** * 【程序26】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母 一样,则继续 判断第二个字母。 * 1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判 断第二个字母。 */ public static void main(String[] args) { // TODO Auto-generated method stub Week[] week = Week.values(); List list = new ArrayList(); List list2 = new ArrayList(); char ch, ch2; Scanner sc = new Scanner(System.in); System.out.println("请输入第一个字符:"); ch = Character.toUpperCase(sc.nextLine().charAt(0)); for (int i = 0; i < 7; i++) { if (ch == week[i].toString().charAt(0)) { list.add(week[i]); } } switch (list.size()) { case 0: System.out.println("星期名称中没有以字母" + ch + "开头的。"); break; case 1: System.out.println("以字母" + ch + "开头的周日期是:" + list.get(0) + ", 即是:" + list.get(0).toChString() + "。"); break; default: System.out.println("请输入第二个字符:"); ch2 = Character.toLowerCase(sc.nextLine().charAt(0)); for (int i = 0; i < list.size(); i++) { if (ch2 == list.get(i).toString().charAt(1)) { list2.add(list.get(i)); } } 26 if (list2.size() == 1) { System.out.println("以" + ch + ch2 + "开头的周日期是:" + list2.get(0) + ",即是:" + list2.get(0).toChString() + "。"); } else { System.out.println("星期名称中没有以" + ch + ch2 + "开头的。"); } } } } enum Week { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday; public String toChString() { String str = ""; switch (this.ordinal()) { case 0: str = "星期日"; break; case 1: str = "星期一"; break; case 2: str = "星期二"; break; case 3: str = "星期三"; break; case 4: str = "星期四"; break; case 5: str = "星期五"; break; case 6: str = "星期六"; break; } return str; } } 【程序27】 27 题目:求100之内的素数 public class PrimeDown100 { /** * 【程序27】 题目:求100之内的素数 */ public static void main(String[] args) { // TODO Auto-generated method stub int ct = 0; for (int i = 2; i < 101; i++) { int j; for (j = 2; j < i; j++) { if (i % j == 0) break; } if (i == j) { ct++; System.out.println(i + " } } System.out.println("2~100之间共有:" + ct + "个质数。"); } } "); 【程序28】 题目:对10个数进行排序 1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一 个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。 import java.lang.reflect.Array; import java.util.Arrays; import java.util.Scanner; public class SortArray10_2 { /** * 【程序28】 题目:对10个数进行排序 。 1、分析 使用Array及Arrays进行排序处理。 */ public static void main(String[] args) { // TODO Auto-generated method stub float f[] = new float[10]; System.out.println("请输入十个实数(中间可以用空格分开,也可以是回车,但不 能够为其它字符,多则仅前十个有效):"); 28 Scanner sc = new Scanner(System.in); for (int i = 0; i < 10; i++) { f[i] = sc.nextFloat(); } System.out.println("你输入的十个数分别为:"); for (int i = 0; i < Array.getLength(f); i++) { System.out.print(Array.getFloat(f, i) + " } Arrays.sort(f); System.out.println("\n你输入的十个数排序(从小到大)后为:"); for (int i = 0; i < Array.getLength(f); i++) { System.out.print(Array.getFloat(f, i) + " } } } 法二: import java.util.Scanner; public class SortArray10 { /** * 【程序28】 题目:对10个数进行排序 1.程序分析:可以利用选择法,即从后9个比较 过程中,选择一个最小的与第一个元素交换, * 下次类推,即用第二个元素与后8个进行比较,并进行交换。 */ public static void main(String[] args) { // TODO Auto-generated method stub float[] f = new float[10]; System.out.println("请输入十个实数(中间可以用空格分开,也可以是回车, 但不能够为其它字符,多则仅前十个有效):"); Scanner sc = new Scanner(System.in); for (int i = 0; i < 10; i++) { f[i] = sc.nextFloat(); } System.out.println("你输入的十个数分别为:"); output(f); float tmp; for (int i = 0; i < f.length - 1; i++) { for (int j = i + 1; j < f.length; j++) { if (f[i] > f[j]) { tmp = f[i]; f[i] = f[j]; "); "); 29 f[j] = tmp; } } } System.out.println("你输入的十个数排序后(从小到大)为:"); output(f); } private static void output(float[] f) { for (int i = 0; i < f.length; i++) { System.out.print(f[i] + " } System.out.println(); } } "); 【程序29】 题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 import java.util.Scanner; public class DiagonalMatrix { /** * 1、设M=(αij)为n阶方阵.M的两个下标相等的所有元素都叫做M的对角元素,而序列 (αii)1≤i≤n叫做M的主对角线. * 2、所有非主对角线元素全等于零的n阶矩阵,称为对角矩阵或称为对角方阵。 */ // *【程序29】 题目:求一个3*3矩阵对角线元素之和 // * 1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 public static void main(String[] args) { // TODO Auto-generated method stub int[][] a = new int[3][3]; Scanner sc = new Scanner(System.in); String[] str = new String[3]; int sum = 0; for (int i = 0; i < 3; i++) { str[i] = ""; for (int j = 0; j < 3; j++) { String tmp = ""; if (i == j) { System.out.println("请输入对角矩阵的第" + (i + 1) + "个 对角上的数:"); a[i][j] = sc.nextInt(); 30 sum += a[i][j]; } else { a[i][j] = 0; } tmp += a[i][j] + " } } System.out.println(" 阵的形式为:"); for (int i = 0; i < 3; i++) { System.out.println(" } System.out.println("这个对角矩阵的对角上线数值的和为:" + sum); } } " + str[i]); 这个对角矩 "; str[i] += tmp.substring(0, 8); 【程序30】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数 组中。 1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的 情况,插入后此元素之后的数,依次后移一个位置。 import java.util.Scanner; public class InsertNumberInOrderedArray { /** * 【程序30】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它 插入数组中。 1. * 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入 后此元素之后的数,依次后移一个位置。 */ // 此程序实际上就是插入排序法,可以根据输入你要进行排序的 // 数据个数,然后排序出来(是升序——从小到大排列的)。 public static void main(String[] args) { // TODO Auto-generated method stub int[] a = new int[1]; int[] b = new int[1]; int k = 2; int tmp, tmp2; Scanner sc = new Scanner(System.in); 31 while (true) { System.out.println("请输入一个大于1的整数:"); tmp2 = sc.nextInt(); if (tmp2 > 1) break; } System.out.println("请你再输入" + tmp2 + "个数(可用空格隔开,也可以 打回车,多的将被去掉)"); a[0] = sc.nextInt(); while (k <= tmp2) { tmp = sc.nextInt(); boolean f = false; b = new int[k]; ShiftArrayElements(b, a);// 临时将数组a的内容存入数组b中 int m; for (m = k - 2; m >= 0; m--) { if (tmp < b[m]) { b[m + 1] = b[m]; f = true; } else { break; } } if (!f) {//如果在它本身最大,则放入最后一个元素中 b[k - 1] = tmp; } else { b[m + 1] = tmp;//否则在中间或开头插入 } a = new int[k++]; ShiftArrayElements(a, b);// 临时将数组b的内容存入数组a中 } System.out.println("============================\n这" + tmp2 + "个数从小到到的顺序如下:"); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " } } private static void ShiftArrayElements(int[] a, int[] b) { for (int i = 0; i < b.length; i++) { a[i] = b[i]; } } "); 32 } 法二: import java.util.Scanner; public class InsertNumberInOrderedArray2 { /** * 【程序30】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它 插入数组中。 1. * 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入 后此元素之后的数,依次后移一个位置。 */ public static void main(String[] args) { // TODO Auto-generated method stub int[] a = new int[8]; int[] b = { 23, 45, 46, 78, 90, 102, 120 }; for (int i = 0; i < b.length; i++) { a[i] = b[i]; } Scanner sc = new Scanner(System.in); int d, i, k; boolean f = true; System.out.println("请输入一个数:"); d = sc.nextInt(); for (i = b.length - 1; i > -1; i--) { if (d < a[i]) { a[i + 1] = a[i]; f = false; } else { break; } } if (f) { a[b.length] = d; k = b.length; } else { a[i + 1] = d; k = i + 1; } output("插入数据前,原来的有序数组为:", b, -1); output("插入数\"" + d + "\"后,得到的结果是:", a, k); } 33 private static void output(String str, int[] a, int k) { System.out.println(str);//k为插入的数作标记,该数前后都加^ for (int i = 0; i < a.length; i++) { if (k != -1 && k == i) { System.out.print("^" + a[i] + "^ } else { System.out.print(a[i] + " } } System.out.println(); } } "); "); 【程序31】 题目:将一个数组逆序输出。 1.程序分析:用第一个与最后一个交换。 public class ReversePrintArray { /** * 【程序31】 题目:将一个数组逆序输出。 1.程序分析:用第一个与最后一个交换。 */ public static void main(String[] args) { // TODO Auto-generated method stub int[] a = { 123, 45, 34, 64, 16, 49, 70, 57, 19 }; output(1, "该数组正序输出为:", a); output(-1, "该数组反序输出为:", a); } private static void output(int f, String str, int[] a) { int k; System.out.print(str); for (int i = 0; i < a.length; i++) { if (f >= 0) { k = i; } else { k = a.length - i - 1; } System.out.print(a[k] + " } System.out.println(); } } "); 34 【程序32】 题目:取一个整数a从右端开始的4~7位。 程序分析:可以这样考虑: (1)先使a右移4位。 (2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4) (3)将上面二者进行&运算。 public class MoveSpecifiedNumbers { /** * 【程序32】 题目: 取一个整数a从右端开始的4~7位。 程序分析: 可以这样考虑: (1) 先使a右移4位。 * (2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4) (3)将上面二者进行&运算。 */ public static void main(String[] args) { // TODO Auto-generated method stub char a = '\u0f40';// 0000 1111 0100 0000b int b = 15;// b为0000 0000 0000 1111b a >>= 4;// a右移四位得:0000 0000 1111 0100b int c; c = a & b; // a&b后,c为:0000 0000 0000 0100b,亦即4。 System.out.println(c); } } 【程序33】 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 import java.util.Scanner; public class YangHuiTriangle { /** * 【程序33】 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: 35 */ // 1 // 1 1 // 1 2 1 // 1 3 3 1 // 1 4 6 4 1 // 1 5 10 10 5 1 public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n; while (true) { System.out.println("请输入杨辉三角的阶数(>=0)的整数"); n = sc.nextInt(); if (n > 0) break; } int[][] a = new int[n][]; for (int i = 0; i < n; i++) { a[i] = new int[i + 1]; String str = ""; for (int j = 0; j <= i; j++) { if (i == 0 && j == 0) { a[i][j] = 1; } else if (j == 0 || j == i) { a[i][j] = 1; } else { a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; } str += (a[i][j] + " } System.out.println(space(20 - i) + str); } } private static String space(int n) { String s = ""; for (int i = 0; i < s += " } return s; } "; n; i++) { ").substring(0, 6); 36 } 【程序34】 题目:输入3个数a,b,c,按大小顺序输出。 1.程序分析:利用指针方法。 import java.util.Scanner; public class ThreeNumbersCompare { /** * 【程序34】 题目:输入3个数a,b,c,按大小顺序输出。 */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("请输入三个数(中间用空格隔开或者回车,多余的无效): "); int a, b, c; a = sc.nextInt(); b = sc.nextInt(); c = sc.nextInt(); System.out.println("原序:" + a + ", " + b + ", " + c); int tmp; if (a < b) { tmp = a; a = b; b = tmp; } if (a < c) { tmp = a; a = c; c = tmp; } if (b < c) { tmp = b; b = c; c = tmp; } System.out.println("现在:" + a + " >= " + b + " >= " + c); } 37 } 【程序35】 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出 数组。 import java.util.Scanner; public class PrizeCommision { /** * 【程序12】 * 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10 * %提成, * 高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成 5%;40万到60万之间时高于40万元的部分,可提成3 * %;60 * 万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元 的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? * 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 */ public static void main(String[] args) { // TODO Auto-generated method stub long profit; long prize; Scanner sc=new Scanner(System.in); while(true){ System.out.println("请输入利润:"); profit=sc.nextLong(); if(profit>0)break; } if(profit<=100000){ prize=(long) (profit*.1); }else if(profit<=200000){ prize=(long) (100000*.1+(profit-100000)*.075); }else if(profit<=400000){ prize=(long) (100000*.1+100000*.075+(profit-200000)*.05); }else if(profit<=600000){ prize=(long) (100000*.1+100000*.075+200000*.05+(profit-400000)*.03); }else if(profit<=1000000){ 38 prize=(long) (100000*.1+100000*.075+200000*.05+200000*.03+(profit-600000)*.015); }else { prize=(long) (100000*.1+100000*.075+200000*.05+200000*.03+400000*.015+(profit-1000 000)*.01); } System.out.println("你应该得到的奖金为:"+prize); } } 【程序36】 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m 个数 import java.util.Scanner; public class ShiftMNumbers { /** * 【程序36】 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最 前面的m个数 */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n, m; while (true) { System.out.println("请输入一个大于1的整数:"); n = sc.nextInt(); if (n > 1) break; } int[] a = new int[n]; int[] b = new int[n]; while (true) { System.out.println("请输入一个大于0而且小于" + n + "的整数:"); m = sc.nextInt(); if (m > 0 && m < n) break; } 39 for (int i = 0; i < n; i++) { System.out.println("请输入" + n + "个数(用空格或回车分隔,多余无 效):"); a[i] = sc.nextInt(); } for (int i = 0; i < n; i++) { if (i < m) { b[i] = a[i + m]; } else { b[i] = a[i - m]; } } output("移位前:", a); output(n + "个整数,使其前面各数顺序向后移" + m + "个位置,最后" + m + "个数变成最前面的" + m + "个数,最后得到:", b); } private static void output(String s, int[] a) { System.out.println(s); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " } System.out.println(); } } "); 【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡 报到3的人退出圈子,问最后留下的是原来第几号的那位。 import java.util.Scanner; public class CircleNumber { /** * 【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); 40 int n; while (true) { System.out.println("请输入一个大于1的整数:"); n = sc.nextInt(); if (n > 1) break; } int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = i + 1; } int e = 0, c = 0; int[] b = new int[n - 1]; int bi = 0; System.out.print("\n==========================\n当为" + n + "个人时,去掉的人的序号有:"); whileCircle: while (true) { for (int i = 0; i < n; i++) { boolean f = true; for (int j = 0; j < bi; j++) { if (a[i] == b[j]) { f = false; break; } } if (f) { c++; if (c == 3) { b[bi] = a[i]; System.out.print(b[bi] + " "); c = 0; bi++; if (bi == (n - 1)) { break whileCircle; } } } } } for (int i = 0; i < n; i++) { boolean f = false; 41 for (int j = 0; j < n - 1; j++) { if (a[i] == b[j]) { f = true; break; } } if (!f) { System.out.println("\n最后剩下的人的号码为:" + a[i] + "号。\n=========================="); break; } } } } 法二: import java.util.Scanner; public class CircleNumber2 { /** * 【程序37】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n; while (true) { System.out.println("请输入一个大于1的整数:"); n = sc.nextInt(); if (n > 1) break; } boolean[] b = new boolean[n]; for (int i = 0; i < b.length; i++) { b[i] = true;// 最初所有人均在圈中,如果为false,表示人已经离开圈子 } int index = 0; int left = n; int count = 0; 42 while (true) { if (left == 1) { break; } if (b[index]) { count++; if (count == 3) { count = 0; left--; b[index] = false; } } index++; if (index == n) { index = 0; } } for (int i = 0; i < b.length; i++) { if (b[i]) { System.out.println("最后剩下的是:" + (i + 1) + "号。"); break; } } } } 【程序38】 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其 长度。 public class MainParaLength { /** * 【程序38】 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并 输出其长度。 */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(args[0].length()); } } 43 【程序39】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n 为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数) import java.util.Scanner; public class OddEvenTest { /** * 【程序39】 * 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇 数时,调用函数1/1+1/3+...+1/n */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n; while (true) { System.out.println("请输入一个正整数:"); n = sc.nextInt(); if (n > 0) break; } float sum = 0; int start; if (n % 2 == 0) start = 2; else start = 1; String s = ""; for (int i = start; i <= n; i += 2) { s += " + 1/" + i; sum += 1.0 / i; } System.out.println(s.substring(3) + " = " + sum); } } 【程序40】 题目:字符串排序。 public class StringArraySort { 44 /** * 【程序40】 题目:字符串排序。 */ public static void main(String[] args) { // TODO Auto-generated method stub String[] str={"hello","Hello","world","abc","wor_ld","123","adk5433","14bcd"," kdard"," fdkajd"}; for(int i=0;i1){//比较结果大于1,则str[i]位 置应该在str[j]后面 s=str[i]; str[i]=str[j]; str[j]=s; } } System.out.print(str[i]+" } System.out.println(str[str.length-1]); } } "); 【程序41】 题目: 海滩上有一堆桃子, 五只猴子来分。 第一只猴子把这堆桃子平均分为五份, 多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃 子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第 三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? public class BeachDividedPeach { /** * 【程序41】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分 为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。 * 第二只猴子把剩下的桃子又平均分成五份 * ,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都 是这样做的,问海滩上原来最少有多少个桃子? */ public static void main(String[] args) { // TODO Auto-generated method stub int sum = 0; 45 int cnt = 0; outer: for (int i = 6; i < 10000; i++) { sum = i; cnt = 0; for (int j = 0; j < 5; j++) { if (sum % 5 == 1) { sum = sum - ((sum / 5) + 1); cnt++; if (cnt == 5) { System.out.println(i); break outer; } } else { break; } } } } } 法二: public class BeachDividedPeach2 { /** * 【程序41】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分 为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。 * 第二只猴子把剩下的桃子又平均分成五份 * ,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都 是这样做的,问海滩上原来最少有多少个桃子? */ public static void main(String[] args) { // TODO Auto-generated method stub String[] str = new String[5]; for (int i = 6; i < 100000; i += 5) {// 桃子至少6个,隔5循环以保证 除以5余1,更减少循环次数,提高执行速度 int k, p = (i - 1) / 5;// 相当于扔掉一个,刚好平分 str[0] = "最开始共有" + i + "个桃子,扔掉一个后,每堆有" + p + " 个桃子。"; boolean f = true; for (int j = 0; j < 4; j++) {// 已经分了一轮,还有四轮分配 k = 4 * p; if (k % 5 != 1) {// 剩下的4份被5除余1 f = false; break; } 46 p = (k - 1) / 5;// 下一轮的仍然是扔掉一个,刚好平分 str[1 + j] = "第" + (j + 2) + "只猴子分配初共有" + k + "个 桃子,扔掉一个后,每堆有" + p + "个桃子。"; } if (f) { System.out.println(i); System.out .println("======================================================= ="); for (int j = 0; j < 5; j++) { System.out.println(str[j]); } break; } } } } 【程序42】 题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*?? 的结果为3位数。求??代表的两位数,及809*??后的结果。 public class DoubleDigit { /** * 【程序42】 题目:809*??=800*??+9*??+1(不是等式) * 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位 数,及809*??后的结果。 */ public static void main(String[] args) { // TODO Auto-generated method stub int x; for (x = 10; x < 100; x++) { int a = 809 * x + 1; if (x * 8 < 100 && x * 9 > 99) { if (a >= 1000 && a <= 100000) { System.out.println("?? = " + x); System.out.println("809 * " + x + " = " + 809 * x); } } 47 } } } 【程序43】 题目:求0—7所能组成(1-8位)的奇数个数。 public class Odd1_8 { /** * 【程序43】 题目:求0—7所能组成(1-8位)的奇数个数。 */ public static void main(String[] args) { // TODO Auto-generated method stub int sum = 0; int t; for (int i = 1; i < 9; i++) { sum += count(i); } System.out.println(sum);// 下面一句为硬算,由此可以验证上述程序的正确 性 System.out.println(4 + 4 * 7 + 4 * 7 * 8 + 4 * 7 * 8 * 8 + 4 * 7 * 8 * 8 * 8 + 4 * 7 * 8 * 8 * 8 * 8 + 4 * 7 * 8 * 8 * 8 * 8 * 8 + 4 * 7 * 8 * 8 * 8 * 8 * 8 * 8); } private static int count(int i) { if (i == 1) return 4; if (i == 2) return 7 * count(i - 1); return 8 * count(i - 1); } } 【程序44】 题目:一个不小于6的偶数总能表示为两个奇素数之和。 public class GoldbachConjecture { 48 /** * Goldbach Conjecture 【程序44】 题目:一个不小于6的偶数总能表示为两个奇素 数之和。 */ public static void main(String[] args) { // TODO Auto-generated method stub boolean[] f=new boolean[50]; for (int i = 6; i < 101; i += 2) { String str = i + " = "; int c = 0; f[(i-6)/2]=false; for (int j = 3; j < i; j += 2) { if (isPrime(j) && isPrime(i - j)) { c++; f[(i-6)/2]=true; if (c == 1) { str += j + " + " + (i - j); } else { str += " 或 " + j + " + " + (i - j); } } } System.out.println(str); } boolean f1=true; for(int i=6;i<101;i+=2){ if(!f[(i-6)/2]){ f1=false; } } System.out.println("========================================"); if (f1) { System.out.println("一个不小于6的偶数总能表示为两个奇素数之和。"); } else { System.out.println("一个不小于6的偶数不是总能表示为两个奇素数之和。 "); } } public static boolean isPrime(int a) { if (a == 1) return false; for (int i = 3; i <= Math.sqrt(a); i++) { 49 if (a % i == 0) return false; } return true; } } 【程序 45】 题目:判断几个 9 能被哪几个素数整除。 public class PrimeDivisible { /** * 【程序45】 题目:判断几个9能被哪几个素数整除。 */ public static void main(String[] args) { // TODO Auto-generated method stub long k, t; t = 10; for (int i = 1; i <= 10; i++) {// i为9的个数 t *= 10; k = t - 1; String str = k + "能够"; int c = 0; for (int j = 2; j <= Math.sqrt(k); j++) { if (k % j == 0 && isPrime(j)) { c++; if (c == 1) { str += "能够被质数" + j + "整数。"; } else { str += "还能够被质数" + j + "整数。"; } } } System.out.println(str); } } private static boolean isPrime(int a) { if (a == 1) return false; for (int i = 2; i <= Math.sqrt(a); i++) { if (a % i == 0) return false; 50 } return true; } } 【程序46】 题目:两个字符串连接程序 import java.util.Scanner; public class StringConcat { /** * 【程序46】 题目:两个字符串连接程序 */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println("请分别输入两个字符串(用空格隔开,多余的自动去除): "); String str1 = sc.next(); String str2 = sc.next(); System.out.println("\""+str1 + "\"和\"" + str2 + "\"连接起来的结 果是:" + (str1 + str2)); } } 【程序47】 题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。 import java.util.Scanner; public class ReadSevenNumbers { /** * 【程序47】 题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个 数的*。 */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int[] a = new int[7]; for (int i = 0; i < 7; i++) { (1-50) 之间的一个整数 (第"+(i+1)+"个) : System.out.println("请输入 51 "); while (true) { a[i] = sc.nextInt(); if (a[i] > 0 && a[i] < 51) { break; } } String str = ""; for (int j = 0; j < a[i]; j++) { str += "*"; } System.out.println(str); } } } 【程序48】 题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加 密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再 将第一位和第四位交换,第二位和第三位交换。 import java.util.Scanner; public class EncodingDecoding { /** * 【程序48】 * 题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的, 加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字 * ,再将第一位和第四位交换,第二位和第三位交换。 */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String str; while (true) { System.out.println("请输入一个四位数,可以以0开头:"); str = sc.next(); boolean f = true; if (str.length() == 4) { for (int i = 0; i < 4; i++) { if (!Character.isDigit(str.charAt(i))) { f = false; 52 } } } else { f = false; } if (f) break; } System.out.println("==========\n你输入的数字是:" + str); String s = encoding(str); System.out.println("==========\n加密后数字是:" + s); System.out.println("==========\n解密后数字是:" + decoding(s)); System.out.println("==========\n输入数据与加密再解密的数字比 较结果为:" + (str.equals(decoding(s)))); } private static String encoding(String str) { int[] a = new int[4]; String s = ""; int tmp; for (int i = 0; i < 4; i++) { a[i] = Integer.parseInt(str.substring(i, i + 1)); tmp = (a[i] + 5) % 10; a[i] = tmp; } tmp = a[0]; a[0] = a[3]; a[3] = tmp; tmp = a[1]; a[1] = a[2]; a[2] = tmp; for (int i = 0; i < 4; i++) { s += "" + a[i]; } return s; } private static String decoding(String str) { int[] a = new int[4]; String s = ""; int tmp; for (int i = 0; i < 4; i++) { 53 a[i] = Integer.parseInt(str.substring(i, i + 1)); if (a[i] >= 5) tmp = a[i] - 5; else tmp = a[i] + 10 - 5; a[i] = tmp; } tmp = a[0]; a[0] = a[3]; a[3] = tmp; tmp = a[1]; a[1] = a[2]; a[2] = tmp; for (int i = 0; i < 4; i++) { s += "" + a[i]; } return s; } } 【程序 49】 题目:计算字符串中子串出现的次数 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class StringAndSubstring { /** * 【程序 49】 题目:计算字符串中子串出现的次数 * * @throws Exception */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入一个字符串(任意长度):"); String str = br.readLine(); System.out.println("请输入要查找的子串:"); String sub = br.readLine(); int l = sub.length(); int count = 0; 54 for (int i = 0; i < str.length() - l; i++) { if (sub.equals(str.substring(i, i + l))) { count++; } } System.out.println("子串出现的总次数为:" + count); } } 【程序 50】 题目:有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包括学生 号,姓名,三门课成绩),计算出平均成绩,将原有的数据和计算出的平均分数 存放在磁盘文件"stud"中。 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Scanner; public class OutputToDisk { /** * 【程序 50】 题目:有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据 (包括学生号,姓名,三门课成绩) ,计算出平均成绩, * 将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。 * * @throws Exception * @throws FileNotFoundException */ public static void main(String[] args) throws FileNotFoundException, Exception { // TODO Auto-generated method stub int number; String name; float score1; float score2; float score3; Student[] stud = new Student[5]; 55 Scanner sc = new Scanner(System.in); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream( "stud.txt", true)); for (int i = 0; i < 5; i++) { System.out.println("请输入第" + (i + 1) + "个同学的(学号、姓名、三科成绩) : "); number = sc.nextInt(); name = sc.next(); score1 = sc.nextFloat(); score2 = sc.nextFloat(); score3 = sc.nextFloat();// 以上为键盘输入学号、姓名及三科成绩 stud[i] = new Student(number, name, score1, score2, score3); // 以下将上述输入及平均成绩写入到文件 stud.txt 中 oos.writeInt(stud[i].getNumber()); oos.writeUTF(stud[i].getName()); oos.writeFloat(stud[i].getScore1()); oos.writeFloat(stud[i].getScore2()); oos.writeFloat(stud[i].getScore3()); oos.writeFloat(stud[i].getAvg()); } oos.flush(); oos.close(); // 以下为从文件中读取上述信息,然后输出姓名及平均成绩 System.out.println("以下为从文件中读取上述信息,然后输出姓名及平均成绩:"); ObjectInputStream ois = new ObjectInputStream(new FileInputStream( "stud.txt")); for (int i = 0; i < 5; i++) { int h; String xm; float a; float b; float c; float d; h = ois.readInt(); xm = ois.readUTF(); a = ois.readFloat(); b = ois.readFloat(); c = ois.readFloat(); d = ois.readFloat(); stud[i] = new Student(h, xm, a, b, c); System.out.println(stud[i].getName() + ": " + stud[i].getAvg()); 56 } ois.close(); } } class Student implements Serializable { /** * */ private static final long serialVersionUID = 1L; private int number; private String name; private float score1; private float score2; private float score3; private float avg; public Student() { } public Student(int number, String name, float score1, float score2, float score3) { this.number = number; this.name = name; this.score1 = score1; this.score2 = score2; this.score3 = score3; this.avg = (score1 + score2 + score3) / 3.0f; } public int getNumber() { return number; } public String getName() { return name; } public float getScore1() { return score1; } 57 public float getScore2() { return score2; } public float getScore3() { return score3; } public float getAvg() { return avg; } } 58