Java_9+8实训Day0905作业题

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;
		}
		
	}
}



数组章节作业 1、将一个数组中的元素倒排过来,不能新开一个数组的临时存储空 间,只能在原数组上改。 2、一个用来模拟栈这种数据结构,要求底层 使用数组存储数据, 并给出相应的进栈和出栈的方法。MyStack int arr[]; int count;//栈中元素个数 public MyStack(int n){ arr = new int[n]; } boolean push(int num){ if(count==arr.length){} arr[count++]=num; } int pop(){ if(count==0){ return -1;} return arr[--count]; } 3、实现在一个数组指定位置添加元素和删除元素的功能。 1、数组容量问题? 2、添加元素前后数组中元素的变化 3、删除元素前后数组中元素的变化 面向对象章节作业 1,一个,名为Animal,该有两个私有属性, name(代表动物的名字),和legs(代表动物的腿的条 数)。并提供个两构造方法一个无参,默认给name 赋值为AAA,给legs赋值为4;另一个需要两个参数, 分别用这两个参数给私有属性赋值。该还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 2,一个Person,包含以下属性:String name; int age; boolean gender; Person partner。 为Person类写一个marry(Person p)方法,代表当前 对象和p结婚,如若可以结婚,则输出恭贺信息, 否则输出不能结婚原因。要求在另外一个一 个主方法,来测试以上程序。(下列情况不能结婚: 结婚年龄,男<24,女<22;3,某一方已婚) 3,一个,名为Animal,该有两个私有属性,name(代表动物的名字),和legs(代表动物的腿的条数);要求为两个私有属性提供public 的访问方法。并提个两构造方法一个无参,默认给name赋值为AAA,给legs赋值为4;另一个需要两个参数,分别用这两个参数给私有属性赋值。要求在第一个构造方法中调用第二个构造方法。该还有两个重载的move()方法,其中一个无参,在屏幕上输出一行文字: XXX Moving!!(XXX为该动物的名字);另一个需要一个int参数n,在屏幕上输出n次 XXX Moving!! 4,一个Fish,继承自Animal,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值0;该还要求覆盖Animal中的无参move()方法,要求输出:XXX Swimming!! 5,一个Bird,继承自Animal,并提供一个构造方法,该构造方法需要一个参数name,并给legs赋默认值2;该还要求覆盖Animal中的无参move()方法,要求输出:XXX Flying!! 6,一个Zoo,要求分别生成若干个Animal,Fish和Bird。并调用他们的属性和方法。 7,Shape,要求如下: 1.int型属性x和y,分别表示图形的中心点坐标 2.无参构造器 3.构造器,对x和y进行初始化 4.draw()方法,输出"Shape draw" Circle,继承Shape,要求如下 1.double型属性r,表示圆的半径 2.无参构造器,将r初始化为1.0 3.构造器,对r进行初始化 4.构造器,对x、y、r进行初始化 5.draw()方法,输出"draw in circle"和x,y,r的值 Rectangle,继承Shape,要求如下 1.double型属性height和width,表示矩形的高和宽 2.无参构造器,将height和width都初始化为1.0 3.构造器,对height和width进行初始化 4.构造器,对x、y、height、width进行初始化 5.draw()方法,输出"draw in rectangle"和x,y,height,width的值 使用ShapeTest测试以上代码。 8,某公司的雇员分为以下若干: Employee:这是所有员工总的父,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子,拿固定工资的员工。属性:月薪 HourlyEmployee:Employee的子,按小时拿工资的员工,每月工作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、每月工作的小时数 SalesEmployee:Employee的子,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率 BasedPlusSalesEmployee:SalesEmployee的子,有固定底薪的销售人员,工资由底薪加上销售提成部分。属性:底薪。 一个程序,把若干各种型的员工放在一个Employee数组里,一个函数,打印出某月每个员工的工资数额。注意:要求把每个都做成完全封装,不允许非私有化属性。 容器章节作业 1、MyStack,实现栈功能。在中使用ArrayList保存数据。 2、使用TreeSet和Comparator,TreeSetTest1 要求:对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 3、使用TreeSet和Comparator,TreeSetTest2 要求:对TreeSet中的元素1,2,3,4,5,6,7,8,9,10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列 4、使用TreeSet和Comparator,TreeSetTestInner 要求: 对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 1. 使用匿名内部实现 2. 使用静态内部实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值