Java_9+8实训Day0905作业题

来源:互联网 发布:qq机器人软件 编辑:程序博客网 时间:2024/06/17 05:48
1、写一个猜数游戏,由程序生成一个100以内的整数,
然后让用户猜,如果猜的数大于此数,告诉用户大了
否则,如果小于该数,告诉用户小了,直到用户猜中为止。
产生随机整数的方法如下:

int number = (int)(Math.random()*100);


package com.problem1;import java.util.Scanner;public class Game {public static void main(String[] args){System.out.println("程序正在生成随机数....");int number = (int)(Math.random()*1000);System.out.println("已经生成一个1000以内的随机数,请猜数:");Scanner sc = new Scanner(System.in);while(sc.hasNext()){int guess=sc.nextInt();if(guess==number){System.out.println("恭喜你,猜对啦!");break;}else if(guess<number){System.out.println("真遗憾,你猜的数小了,请重新猜数:");}else if(guess>number){System.out.println("真遗憾,你猜的数大了,请重新猜数:");}}System.out.println("游戏结束!");}}


2、个人所得税计算器:编写程序实现个人所得税的计算,要求输入工资总额和三险一金总额,求出本月应纳个税。
全月应纳税所得额=本月工资总额—三险一金—个税起征点(2000.00)


个人所得税率计算表: 
级数    全月应纳税所得额 税率(%)
 1        不超过500元的 5
2       超过500元至2,000元的部分 10
3       超过2,000元至5,000元的部分 15
4       超过5,000元至20,000元的部分 20
5       超过20,000元至40,000元的部分 25
6       超过40,000元至60,000元的部分 30
7       超过60,000元至80,000元的部分 35
8       超过80,000元至100,000元的部分 40

9       超过100,000元的部分 45 


package com.problem2;import java.util.Scanner;public class Calculate {public static void main(String[] args) {double salary,cost;System.out.println("请输入工资总额和三险一金总额:");Scanner sc = new Scanner(System.in);salary=sc.nextDouble();cost=sc.nextDouble();double tax,totalTax;double[] amount=new double[10];//对应第i级应该缴纳的前i-1级的个人所得税amount[0]=0;amount[1]=0;amount[2]=amount[1]+500*0.05;amount[3]=amount[2]+(2000-500)*0.1;amount[4]=amount[3]+(5000-2000)*0.15;amount[5]=amount[4]+(20000-5000)*0.20;amount[6]=amount[5]+(40000-20000)*0.25;amount[7]=amount[6]+(60000-40000)*0.30;amount[8]=amount[7]+(80000-60000)*0.35;amount[9]=amount[8]+(100000-80000)*0.4;tax=salary-cost-2000;if(tax<=0) totalTax=0;else if(tax<=500){//1级totalTax = amount[1] + tax*0.05;}else if(tax>500 && tax<=2000){//2级totalTax = amount[2] + (tax-500)*0.1;}else if(tax>2000 && tax<=5000){//3级totalTax = amount[3] + (tax-2000)*0.15;}else if(tax>5000 && tax<=20000){//4级totalTax = amount[4] + (tax-5000)*0.2;}else if(tax>20000 && tax<=40000){//5级totalTax = amount[5] + (tax-20000)*0.25;}else if(tax>40000 && tax<=60000){//6级totalTax = amount[6] + (tax-40000)*0.30;}else if(tax>60000 && tax<=80000){//7级totalTax = amount[7] + (tax-60000)*0.35;}else if(tax>80000 && tax<=100000){//8级totalTax = amount[8] + (tax-80000)*0.40;}else {//9级totalTax = amount[9] + (tax-100000)*0.45;}System.out.println("你的工资总额:"+salary);System.out.println("你的五险一金:"+cost);System.out.println("你本月应纳个税:"+totalTax);}}



3、写一个类Person,包含以下属性:
String name; int age; boolean  gender;Person partner。
为Person类写一个marry(Person  p)方法,代表当前对象和p结婚,
如若可以结婚,则输出恭贺信息,否则输出不能结婚原因。
要求在另外一个类中写一个主方法,来测试以上程序。
(下列情况不能结婚:
1,同性;
2,未达到结婚年龄,男<24,女<22;3,某一方已婚)


package com.problem3;public class Person {public String name;public int age;public boolean gender;public Person partner;public void marry(Person p){boolean canMarry=true;//同性if(this.gender==p.gender){canMarry=false;System.out.println(this.name+"和"+p.name+" 性别相同;");}//未达到结婚年龄if(this.gender==true && this.age<24){canMarry=false;System.out.println(this.name+"未达到结婚年龄;");}else if(this.gender==false && this.age<22){canMarry=false;System.out.println(this.name+"未达到结婚年龄;");}if(p.gender==true && p.age<24){canMarry=false;System.out.println(p.name+"未达到结婚年龄;");}else if(p.gender==false && p.age<22){canMarry=false;System.out.println(p.name+"未达到结婚年龄;");}//某一方已结婚if(this.partner!=null){canMarry=false;System.out.println(this.name+"已结婚;");}if(p.partner!=null){canMarry=false;System.out.println(p.name+"已结婚;");}if(canMarry==false){System.out.println("由于以上原因,"+this.name+"和"+p.name+"不能结婚!");}else{this.partner=p;p.partner=this;System.out.println("恭喜"+this.name+"和"+p.name+"喜结连理!新婚快乐!");}}}


package com.problem3;public class Test {public static void main(String[] args) {Person hao=new Person();hao.name="小黑";hao.age=28;hao.gender=true;hao.partner=null;Person bin=new Person();bin.name="小红";bin.age=25;bin.gender=false;bin.partner=null;hao.marry(bin);Person wei=new Person();wei.name="大黑";wei.age=22;wei.gender=true;wei.partner=null;Person hua=new Person();hua.name="大红";hua.age=25;hua.gender=true;hua.partner=new Person();wei.marry(hua);}}



4、栈是一种常用的数据结构,其特点是存储数据时“后进先出”。
写一个类用来模拟栈这种数据结构,要求底层使用数组存储数据,

并给出相应的进栈和出栈的方法。


package com.problem4;public class Stack {Object[] stack=new Object[1000];int index;Stack(){index=0;}public void push(Object obj){stack[index++]=obj;}public void pop(){if(!this.empty()) index--;}public boolean empty(){if(index==0) return true;else return false;}public Object peek(){if(!this.empty()) return stack[index-1];return null;}public void clearAll(){index=0;}}

package com.problem4;public class Test {public static void main(String[] args) {Stack stack=new Stack();stack.push(1);System.out.println("当前栈顶元素:"+stack.peek());stack.push(2.2);System.out.println("当前栈顶元素:"+stack.peek().toString());stack.push("eapink");System.out.println("当前栈顶元素:"+stack.peek().toString());stack.pop();System.out.println("当前栈顶元素:"+stack.peek().toString());if(stack.empty()) System.out.println("当前栈为空");else System.out.println("当前栈有 "+stack.index+" 个元素");stack.clearAll();if(stack.empty()) System.out.println("当前栈为空");}}


5、用数组实现约瑟夫出圈问题。 n个人排成一圈,
从第一个人开始报数,从1开始报,报到m的人出圈,
剩下的人继续开始从1报数,直到所有的人都出圈为止。

对于给定的n,m,求出所有人的出圈顺序。


package com.problem5;public class Joseph {public static void main(String[] args){joseph(6,5);}public static void joseph(int n,int m){if(n>1000){System.out.println("人数过多,无法进行约瑟夫求解!");return ;}boolean[] team=new boolean[1001];for(int i=1;i<=n;++i){team[i]=true;}int num=0,now=0;for(int i=1;i<=n;++i){if(team[i]==true){now=now+(team[i]?1:0);if(now==m){now=0;team[i]=false;num++;System.out.print(i+" ");}if(num==n){break;}}if(i==n) i=0;}}}



原创粉丝点击