1、写一个猜数游戏,由程序生成一个100以内的整数,
然后让用户猜,如果猜的数大于此数,告诉用户大了
否则,如果小于该数,告诉用户小了,直到用户猜中为止。
产生随机整数的方法如下:
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
String name; int age; boolean gender;Person partner。
为Person类写一个marry(Person p)方法,代表当前对象和p结婚,
如若可以结婚,则输出恭贺信息,否则输出不能结婚原因。
要求在另外一个类中写一个主方法,来测试以上程序。
(下列情况不能结婚:
1,同性;
2,未达到结婚年龄,男<24,女<22;3,某一方已婚)
4、栈是一种常用的数据结构,其特点是存储数据时“后进先出”。
写一个类用来模拟栈这种数据结构,要求底层使用数组存储数据,
5、用数组实现约瑟夫出圈问题。 n个人排成一圈,
从第一个人开始报数,从1开始报,报到m的人出圈,
剩下的人继续开始从1报数,直到所有的人都出圈为止。
然后让用户猜,如果猜的数大于此数,告诉用户大了
否则,如果小于该数,告诉用户小了,直到用户猜中为止。
产生随机整数的方法如下:
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);
}
}
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;
}
}
}