《2022年java经典小程序 .pdf》由会员分享,可在线阅读,更多相关《2022年java经典小程序 .pdf(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1,编写程序,判断给定的某个年份是否是闰年。闰年的判断规则如下:(1)若某个年份能被4 整除但不能被100 整除,则是闰年。(2)若某个年份能被400 整除,则也是闰年。import java.util.Scanner; class Bissextile public static void main(String arge) System.out.print( 请输入年份 ); int year; /定义输入的年份名字为“ year ”Scanner scanner = new Scanner(System.in); year = scanner.nextInt(); if (year300
2、0) System.out.println( 年份有误,程序退出!); System.exit(0); if (year%4=0)&(year%100!=0)|(year%400=0) System.out.println(year+ is bissextile); else System.out.println(year+ is not bissextile ); 2,给定一个百分制的分数,输出相应的等级。90 分以上A 级8089 B 级7079 C 级6069 D 级60 分以下E 级import java.util.Scanner; class Mark public static v
3、oid main(String args) System.out.println( 请输入一个分数); /定义输入的分数为“mark”,且分数会有小数double mark; Scanner scanner = new Scanner(System.in); mark = scanner.nextDouble(); /判断是否有输入错误。if(mark100) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 29 页 - - - - - - - - - System.ou
4、t.println( 输入有误!); System.exit(0); /*判断分数的等级90 分以上者A 级,8089 分者B 级, 7079 分者C 级,6069 者 D 级, 60 分以下E 级 */ if (mark=90) System.out.println(this mark is grade A ); else if (mark=80) System.out.println(this mark is grade B ); else if (mark=70) System.out.println(this mark is grade C ); else if (mark=60) S
5、ystem.out.println(this mark is grade D ); else System.out.println(this mark is grade E ); 3,编写程序求1+3+5+7+ +99 的和值。class he public static void main(String args) int number = 1; /初始值 1,以后再 +2 递增上去int sum = 0; for ( ; number 100; number+=2 ) sum += number; System.out.println(1+3+5+7+ +99= +sum); 4、利用 f
6、or 循环打印9*9 表? 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=6
7、3 8*9=72 9*9=81 /循环嵌套,打印九九乘法表public class NineNine public static void main(Stringargs) System.out.println(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 29 页 - - - - - - - - - for (int j=1;j10;j+) for(int k=1;k10;k+) /老师的做法,判断语句里的kj) break; /此处用continue 也可以,
8、只是效率低一点System.out.print( +k+X+j+=+j*k); System.out.println(); 6、输出所有的水仙花数,把谓水仙花数是指一个数3 位数,其各各位数字立方和等于其本身,例如:153 = 1*1*1 + 3*3*3 + 5*5*5 class DafodilNumber public static void main(String args) System.out.println( 以下是所有的水仙花数); int number = 100; / 由于水仙花数是三位数,故由100 开始算起int i, j, k; / i j k 分别为 number 的
9、百位、十位、个位for (int sum; number1000; number+) i=number/100; j=(number-i*100)/10; k=number-i*100-j*10; sum=i*i*i+j*j*j+k*k*k; if (sum=number) System.out.println(number+ is a dafodil number! ); 7、求a+aa+aaa+.+aaaaaaaaa=? 其中 a 为 1 至 9 之中的一个数,项数也要可以指定。import java.util.Scanner; class Multinomial public stati
10、c void main(String args) int a; /定义输入的a int howMany; /定义最后的一项有多少个数字Scanner scanner = new Scanner(System.in); System.out.println( 请输入一个19 的 a 值); a = scanner.nextInt(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 29 页 - - - - - - - - - System.out.println( 请问要
11、相加多少项?); howMany = scanner.nextInt(); int sum=0; int a1=a; / 用来保存a 的初始值for (int i=1; i=howMany; i+) sum+= a; a = 10*a +a1; / 这表示 a 的下一项/ 每次a 的下一项都等于前一项*10,再加上刚输入时的a ;注意,这时的a 已经变化了。 System.out.println(sum=+sum); 8、求2/1+3/2+5/3+8/5+13/8. 前 20 项之和?class Sum public static void main(Sting args) double su
12、m=0; double fenZi=2.0, fenMu=1.0; /初始的分子(fenZi) 2,分母 (fenMu) 1 for(int i=1; i=20; i+) sum += fenZi / fenMu ; fenMu = fenZi; /下一项的分母 上一项的分子fenZi += fenMu; /下一项的分子 上一项的分子加分母 System.out.println(sum= sum); 9、利用程序输出如下图形: * * * * * * * * * * * * * * * * * * * * * * * * * class Asterisk public static void
13、main(String args) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 29 页 - - - - - - - - - for (int i=1; i=13; i+=2) for(int j=1; j=i & i+j= 14; j+)System.out.print(* ); System.out.println(); / 换行 11、计算圆周率PI 44/3+4/5-4/7. 打印出第一个大于3.1415 小于3.1416 的值class Pi public
14、static void main(String args) double pi =0; /定义初始值double fenZi = 4; /分子为 4 double fenMu = 1; /第一个 4,可看作分母为1 的分式,以后的分母每次递增2 for (int i = 0; i 1000000000; i+) /运行老久,减少循环次数会快很多,只是精确度小些pi += (fenZi/fenMu) ; fenZi *= -1.0; /每项分子的变化是+4, 4,+4, 4 . fenMu += 2.0; /分母的变化是1,3,5,7, . 每项递加2 System.out.println(pi
15、); 输出结果为pi = 3.1415926525880504 ,应该不精确12、输入一个数据n,计算斐波那契数列(Fibonacci)的第 n个值1 1 2 3 5 8 13 21 34 规律:一个数等于前两个数之和/计算斐波那契数列(Fibonacci)的第 n 个值public class Fibonacci public static void main(String args) int n = Integer.parseInt(args0); int n1 = 1;/ 第一个数int n2 = 1;/ 第二个数int sum = 0;/ 和if(n=0) System.out.pri
16、ntln( 参数错误 !); return; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 29 页 - - - - - - - - - if(n=2) sum = 1; else for(int i=3;i=n;i+) sum = n1+n2; n1 = n2; n2 = sum; System.out.println(sum); /计算斐波那契数列(Fibonacci)的第 n 个值/并把整个数列打印出来public class FibonacciPrint pub
17、lic static void main(String args) int n = Integer.parseInt(args0); FibonacciPrint t = new FibonacciPrint(); for(int i=1;i=n;i+) t.print(i); public void print(int n) int n1 = 1;/ 第一个数int n2 = 1;/ 第二个数int sum = 0;/ 和if(n=0) System.out.println( 参数错误 !); return; if(n=2) sum = 1; else for(int i=3;i=n;i+)
18、 sum = n1+n2; n1 = n2; n2 = sum; System.out.println(sum); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 29 页 - - - - - - - - - 13、求 1-1/3+1/5-1/7+1/9. 的值。a,求出前 50 项和值。b,求出最后一项绝对值小于1e-5 的和值。15、在屏幕上打印出n 行的金字塔图案,如,若n=5,则图案如下:* * * * * /打印金字塔图案public class PrintSt
19、ar public static void main(String args) int col = Integer.parseInt(args0); for(int i=1;i=col;i+)/i表示行数/打印空格for(int k=0;kcol-i;k+) System.out.print( ); /打印星星for(int m=0;m2*i-1;m+) System.out.print(*); System.out.println(); 16、歌德巴赫猜想,任何一个大于六的偶数可以拆分成两个质数的和打印出所有的可能/任何一个大于六的偶数可以拆分成两个质数的和/打印出所有的可能public c
20、lass Gedebahe public static void main(String args) int num = Integer.parseInt(args0); if(num=6) System.out.println( 参数错误 !); return; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 29 页 - - - - - - - - - if(num%2!=0) System.out.println( 参数错误 !); return; Gedebahe
21、 g = new Gedebahe(); /1 不是质数 ,2 是偶数 ,因此从 3 开始循环for(int i=3;i=num/2;i+) if(i%2=0)/如果为偶数 ,退出本次循环continue; /当 i 与 num-i 都为质数时 ,满足条件 ,打印if(g.isPrime(i) & g.isPrime(num-i) System.out.println(i+ + +(num-i)+ = +num); 第 4 章 数组1. 定义一个int 型的一维数组,包含10 个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。class ArrayNumb
22、er public static void main(String args) int arrayNumber; arrayNumber = new int10; System.out.println( 以下是随机的10 个整数: ); / 填入随机的10 个整数for (int i =0; iarrayNumber.length; i+) arrayNumberi = (int)(100*Math.random(); System.out.print(arrayNumberi+ ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
23、 - 名师精心整理 - - - - - - - 第 8 页,共 29 页 - - - - - - - - - System.out.println(); int max = arrayNumber0; int min = arrayNumber0; int sum = 0; for (int i =0; iarrayNumber.length; i+) if(max arrayNumberi) min = arrayNumberi; /求最小值sum += arrayNumberi; System.out.println( 其中Max=+max+,Min=+min+,Sum=+sum+,Avg
24、=+sum/10.0); 2.定义一个int 型的一维数组,包含10 个元素,分别赋值为110, 然后将数组中的元素都向前移一个位置,即, a0=a1,a1=a2,最后一个元素的值是原来第一个元素的值,然后输出这个数组。3. 定义一个int 型的一维数组,包含40 个元素,用来存储每个学员的成绩,循环产生40 个0100 之间的随机整数,将它们存储到一维数组中,然后统计成绩低于平均分的学员的人数,并输出出来。4. (选做)承上题,将这40 个成绩按照从高到低的顺序输出出来。5,(选做)编写程序,将一个数组中的元素倒排过来。例如原数组为1,2,3,4,5;则倒排后数组中的值为 5,4,3,2,
25、1。6,要求定义一个int 型数组 a,包含 100 个元素 ,保存 100 个随机的4 位数。再定义一个int 型数组 b,包含 10 个元素。统计a 数组中的元素对10 求余等于0 的个数,保存到 b0中;对 10 求余等于 1 的个数,保存到b1中, 依此类推。class Remain public static void main( String args) int a = new int100; /保存 100 个随机 4 位数到a 中for (int i = 0; i a.length; i+) ai = (int) (1000*Math.random(); /统计a 数组中的元素
26、对10 求余的各个的数目名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 29 页 - - - - - - - - - int b = new int10; int k,sum; for (int j = 0; j b.length; j+) for (k=0,sum=0; k 1.0E-4|N%2=0|N0) System.out.println( 输入出错 ,格局只能是正奇数。请重新输入); else break; /老师的九宫格填写方法int result = new
27、 intNN; /定义保存九宫格的数组int row = 0; / 行 初始位置int col = N/2; / 列 初始位置 ,因为列由 0 开始,故 N/2 是中间位置for (int i=1; i=N*N; i+) result rowcol = i; row-; col+; if (row=N)col-;row+=2; /行列都越界else if (row=N)col = 0; /列越界else if (resultrowcol != 0)col-;row+=2; /有冲突 /打印出九宫格for (int i=0; iN; i+) for(int j=0; jN; j+)System.
28、out.print(resultij+t); System.out.println(); /我个人的填格方式int result2 = new intNN; /为免冲突,重新new 一个数组名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 29 页 - - - - - - - - - result2N/2N/2 = (N*N+1)/2; /先把中间值赋予中间位置row = 0; /定义行及列的初始赋值位置。之前赋值的for 对两个值有影响,故需重新定位col = N/2;
29、 for (int i=1; i=N*N/2; i+) result2rowcol = i; /下面这句是把跟i 对应的值放到格局对应的位置上result2N-row-1N-col-1 = N*N+1-i; row-; col+; if (row=N)col = 0; /列越界else if (result2rowcol != 0)col-;row+=2; /有冲突/这方法不可能出现行列两边都越界的情况,详情需要数学论证 System.out.println(); /再次打印出九宫格,以对比验证for (int i=0; iN; i+) for(int j=0; jN; j+)System.o
30、ut.print(result2ij+t); System.out.println(); 9,求一个 3*3 矩阵对角线元素之和10,打印杨辉三角11. 约梭芬杀人法把犯人围成一圈,每次从固定位置开始算起,杀掉第7 个人,直到剩下最后一个。11_2、用数组实现约瑟夫出圈问题。n 个人排成一圈,从第一个人开始报数,从1 开始报,报到 m 的人出圈, 剩下的人继续开始从1 报数,直到所有的人都出圈为止。对于给定的n,m,求出所有人的出圈顺序。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
31、 12 页,共 29 页 - - - - - - - - - 12. 判断随机整数是否是素数产生 100 个 0-999 之间的随机整数,然后判断这100 个随机整数哪些是素数,哪些不是?public class PrimeTest public static void main(String args) for(int i=0;i100;i+) int num = (int)(Math.random()*1000); PrimeTest t = new PrimeTest(); if(t.isPrime(num) System.out.println(num+ 是素数 !); else Sy
32、stem.out.println(num+ 不是素数 !); System.out.println(); public boolean isPrime(int num) for(int i=2;i=num/2;i+) if(num%i=0) System.out.println(num+ 第一个被 +i+ 整除 !); return false; return true; 冒泡排序法:/按从大到小的排序int tmp = a0; for (int i=0; i a.length; i+) for (int j=0; j a.length - i -1; j+) if (aj aj+1) tmp
33、 = aj; aj = aj+1; aj+1 = tmp; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 29 页 - - - - - - - - - day06 练习某公司的雇员分为以下若干类:Employee:这是所有员工总的父类,属性:员工的姓名和生日月份。方法: getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。SalariedEmployee:Employee 的子类,拿固定工资的员工。属性:月
34、薪HourlyEmployee :Employee 的子类,按小时拿工资的员工,每月工作超出160 小时的部分按照1.5 倍工资发放属性:每小时的工资、每月工作的小时数SalesEmployee:Employee 的子类,销售人员,工资由月销售额和提成率决定属性:月销售额、提成率BasePlusSalesEmployee:SalesEmployee 的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分属性:底薪。public class TestEmployee public static void main(Stringargs) Employee es = new Employee5;
35、 es0 = new Employee( 赵君 ,2); es1 = new SalariedEmployee( 宋婕 , 1, 8000); es2 = new HourlyEmployee( 王超 , 5, 10, 300); es3 = new SalesEmployee( 秋娥 , 2, 200000, 0.05); es4 = new BaseSalarySalesEmployee( 郭镫鸿 , 1, 1000000, 0.1, 10000); int month = 2;/ 本月为 2 月System.out.println( 宇宙集团 +month+ 月工资表: ); for(i
36、nt i=0; ies.length; i+) System.out.println(esi.getName()+:+esi.getSalary(month); class Employee private String name; private int birth; public String getName() return name; public Employee(String name, int birth) this.name = name; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
37、 - - - - 第 14 页,共 29 页 - - - - - - - - - this.birth = birth; public double getSalary(int month) if(month=birth) return 100; return 0; class SalariedEmployee extends Employee private double salary; public SalariedEmployee(String name, int birth, double salary) super(name, birth); this.salary = salary
38、; public double getSalary(int month) return salary + super.getSalary(month); class HourlyEmployee extends Employee private double hourSalary; private int hour; public HourlyEmployee(String name, int birth, double hourSalary, int hour) super(name, birth); this.hourSalary = hourSalary; this.hour = hou
39、r; public double getSalary(int month) if(hour=160) return hourSalary*hour+super.getSalary(month); else return 160*hourSalary+(hour-160)*hourSalary*1.5+super.getSalary(month); class SalesEmployee extends Employee private double sales; private double pre; public SalesEmployee(String name, int birth, d
40、ouble sales, double pre) super(name, birth); this.sales = sales; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 29 页 - - - - - - - - - this.pre = pre; public double getSalary(int month) return sales*pre+super.getSalary(month); class BaseSalarySalesEmployee ext
41、ends SalesEmployee private double baseSalary; public BaseSalarySalesEmployee(String name, int birth, double sales, double pre, double baseSalary) super(name, birth, sales, pre); this.baseSalary = baseSalary; public double getSalary(int month) return baseSalary+super.getSalary(month); /* * 在原有的雇员练习上修
42、改代码* 公司会给SalaryEmployee 每月另外发放2000 元加班费 ,给* BasePlusSalesEmployee 发放 1000 元加班费* 改写原有代码,加入以上的逻辑* 并写一个方法,打印出本月公司总共发放了多少加班费* author Administrator * */ public class EmployeeTest /* * param args */ public static void main(String args) Employee e = new Employee4; e0 = new SalariedEmployee( 魏威 ,10,5000); e
43、1 = new HourlyEmployee( 段利峰 ,8,80,242); e2 = new SalesEmployee( 林龙 ,11,300000,0.1); e3 = new BasedPlusSalesEmployee( 华溪 ,1,100000,0.15,1500); for(int i=0;ie.length;i+) System.out.println(ei.getName()+: +ei.getSalary(11); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
44、 16 页,共 29 页 - - - - - - - - - /统计加班费int result = 0; / for(int i=0;ie.length;i+) / if(ei instanceof SalariedEmployee) / SalariedEmployee s = (SalariedEmployee)ei; / result += s.getAddtionalSalary(); / / if(ei instanceof BasedPlusSalesEmployee) / BasedPlusSalesEmployee b = (BasedPlusSalesEmployee)ei;
45、 / result += b.getAddtionalSalary(); / / for(int i=0;ie.length;i+) result += ei.getAddtionalSalary(); System.out.println( 加班费 : +result); interface AddtionalSalary int getAddtionalSalary(); class Employee implements AddtionalSalary private String name;/ 员工姓名private int birth;/ 员工生日月份public Employee(
46、String name,int birth) this.name = name; this.birth = birth; public int getSalary(int month) int result = 0; if(month=birth) result = 100; return result; public String getName() return name; public int getAddtionalSalary() return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
47、 - - - - - 第 17 页,共 29 页 - - - - - - - - - class SalariedEmployee extends Employee private int salaryPerMonth; public SalariedEmployee(String name,int birth,int salaryPerMonth) super(name,birth); this.salaryPerMonth = salaryPerMonth; public int getSalary(int month) return this.salaryPerMonth + super
48、.getSalary(month)+ this.getAddtionalSalary(); public int getAddtionalSalary() return 2000; class HourlyEmployee extends Employee private int salaryPerHour; private int hoursPerMonth; public HourlyEmployee(String name,int birth,int salaryPerHour,int hoursPerMonth) super(name,birth); this.salaryPerHou
49、r = salaryPerHour; this.hoursPerMonth = hoursPerMonth; public int getSalary(int month) int result = 0; if(this.hoursPerMonth=160) result = hoursPerMonth*salaryPerHour; else result = 160*salaryPerHour + (int)(hoursPerMonth-160)*1.5*salaryPerHour); return result+super.getSalary(month); class SalesEmpl
50、oyee extends Employee private int sales; private double rate; public SalesEmployee(String name,int birth,int sales,double rate) super(name,birth); this.sales = sales; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 29 页 - - - - - - - - - this.rate = rate; publi