corejava 练习题目 2
1、写一个猜数游戏,由程序生成一个100以内的整数,然后让用户猜,如果猜的数大于此数,告诉用户大了否则,如果小于该数,告诉用户小了,直到用户猜中为止。
?产生随机整数的方法如下:
??int number = (int)(Math.random()*100);
??
import java.util.Scanner;
public class CaiShu{
?public static void main(String[] args){
??int number = (int)(Math.random()*100);
??boolean flag = true;
??
??while(flag){
???System.out.print("请您猜猜随机产生的整数是:");
???Scanner scan = new Scanner(System.in);
???int num = scan.nextInt();
???if(num > number){
????System.out.println("不好意思,您猜的数字偏大了!");?
???}?else if(num < number){
????System.out.println("不好意思,您猜的数字偏小了!");
???}else{
????System.out.println("恭喜您,猜对了!");?
????break;
???}
??}?
??
??System.out.println("随机产生的整数是:" + number);
?}?
}??
??
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
import java.util.Scanner;
public class JiShui {
?public static void main(String[] args){
???System.out.print("请你输入你的月工资总额:");
???Scanner scan = new Scanner(System.in);
???double salary = scan.nextDouble();
???System.out.print("请输入你的三险一金总额:");
???double d = scan.nextDouble();
???double jishui = salary - d - 2000.0;
?
???? if(jishui < 0){
???? ?System.out.println("国家可怜你,你不用交税!");
???? }else if(jishui < 500){
???? ?System.out.println("你应交" + jishui * 0.05 + " 元税钱!");
???? }else if(jishui >= 500 && jishui < 2000){
???? ?System.out.println("你应交" + jishui * 0.10 + " 元税钱!");?
???? }else if(jishui > 2000 && jishui >= 5000){
???? ?System.out.println("你应交" + jishui * 0.15 + " 元税钱!");
???? }else if(jishui > 5000 && jishui <= 20000){
???? ?System.out.println("你应交" + jishui * 0.20 + " 元税钱!");
???? }else if(jishui > 20000 && jishui <= 40000){
???? ?System.out.println("你应交" + jishui * 0.25 + " 元税钱!");
???? }else if(jishui > 40000 && jishui <= 60000){
???? ?System.out.println("你应交" + jishui * 0.30 + " 元税钱!");
???? }else if(jishui > 600000 && jishui <= 800000){
???? ?System.out.println("你应交" + jishui * 0.35 + " 元税钱!");
???? }else if(jishui > 800000 && jishui <= 1000000){
???? ?System.out.println("你应交" + jishui * 0.40 + " 元税钱!");
???? }else{
???? ?System.out.println("你应交" + jishui * 0.45 + " 元税钱!");
???? }
???? ??
?}?
}
3、写一个类Person,包含以下属性:String name; int age; boolean? gender;Person partner。为Person类写一个marry(Person? p)方法,代表当前对象和p结婚,如若可以结婚,则输出恭贺信息,否则输出不能结婚原因。要求在另外一个类中写一个主方法,来测试以上程序。(下列情况不能结婚:1,同性;2,未达到结婚年龄,男<24,女<22;3,某一方已婚)
?
class Person{
?String name;
?int age;
?boolean gender;
?Person partner;
?
?Person(String name, int age, boolean gender, Person partner){
??this.name = name;
??this.age = age;
??this.gender = gender;
??this.partner = partner;?
?}
?
?public void marry(Person p){
??if(this.gender == p.gender){
???System.out.println("同性不可以结婚!");?
??}else if(this.partner != null || p.partner != null){
???System.out.println("男性或女性已结婚,你们不可以结婚!");
??}else{
???if((true == this.gender && this.age < 24) || (true == p.gender && p.age < 24) ){
????System.out.println("男性小于24岁!");
????return;
???}
???if((false == this.gender && this.age < 22) || (false == p.gender && p.age < 22)){
????System.out.println("女性小于22岁!");?
???}else{
????System.out.println("祝 " + this.name + " 与 " + p.name + " 新婚快乐!");
???}
??}
?}
?
}
public class MarryTest{
?public static void main(String[] args){
???Person tom = new Person("tom", 29, true, null);
???Person jerry = new Person("jerry", 29, false, null);
???tom.marry(jerry);
?}?
}