7.1 设计Person类,将性别属性设置为枚举类型。在测试类中,输出Person对象的时候,要 求格式如下:
Person {name = xiaoming, gender = 男}
public enum Sex {
boy("男"),
gilr("女");
private String sex;
Sex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
}
public class Person {
String name;
Sex gender;
public Person(String name, Sex gender) {
this.name = name;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Sex getGender() {
return gender;
}
public void setGender(Sex gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", gender=" + gender.getSex() +
'}';
}
}
public class TestPerson {
public static void main(String[] args) {
Person xiaoming = new Person("xiaoming", Sex.BOY);
System.out.println(xiaoming);
}
}
7.2 . 在Person类中,添加一个方法,用来设置Person的性别。
public void setGender(String sex) {
if("男".equals(sex))
this.gender = Sex.BOY;
else if("女".equals(sex))
this.gender = Sex.GILR;
}
7.3 设计一个方法,计算从控制台输入的两个数字的和,并处理各种输入的时候的异常
public class TestNumSum {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String sum1 = scanner.next();
String sum2 = scanner.next();
Double sum = Double.parseDouble(sum1)+Double.parseDouble(sum2);
System.out.println(sum);
}
}
7.4 小明去饭店吃饭,身上带了22块钱,随机产生[15, 30]范围的饭钱,如果小明的钱不够支 付饭钱,抛出一个 NotEnoughMoneyException的运行时异常。
public class NotEnoughMoneyException extends Exception {
public NotEnoughMoneyException(String massage) {
super(massage);
}
}
public void test4(){
final int money = 22;
int price = (new Random().nextInt(16))+ 15;
if(price>money){
try {
throw new NotEnoughMoneyException("钱不够");
} catch (NotEnoughMoneyException e) {
e.printStackTrace();
}
}
}
7.5 【最难】设计一个方法,将一个数组中的元素随机排列
public void test5(){
int[] ints = {1,2,3,4,5,7,8,9,10,11,12,13,14,15};
Random random = new Random();
int temp;
int r;
for (int i = 0; i < ints.length; i++) {
r = random.nextInt(ints.length);
temp = ints[i];
ints[i] = ints[r];
ints[r] = temp;
}
System.out.println(Arrays.toString(ints));
}
7.6.1 修改课上练习三,在随机产生数字的同时也能随机产生花色,代码完成后每次运行程序 时,都能随机出牌,如“梅花5”、“方块J”等
public void test6(){
Poker randomPoker = Poker.getRandomPoker();
System.out.println(randomPoker);
}
public enum PokerNum {
PA(1,"A"),
p2(2,"2"),
p3(3,"3"),
p4(4,"4"),
p5(5,"5"),
p6(6,"6"),
p7(7,"7"),
p8(8,"8"),
p9(9,"9"),
p10(10,"10"),
pJ(11,"J"),
pQ(12,"Q"),
pK(13,"K"),
p小王(14,"小王"),
p大王(15,"大王");
private int index;
private String pokerStr;
PokerNum(int index,String pokerStr) {
this.index = index;
this.pokerStr = pokerStr;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public String getPokerStr() {
return pokerStr;
}
public void setPokerStr(String pokerStr) {
this.pokerStr = pokerStr;
}
public static PokerNum getPoKerNumByIndex(int index){
System.out.println(index);
for (PokerNum pokerNum : PokerNum.values()) {
if(pokerNum.index == index)
return pokerNum;
}
return null;
}
}
public enum PokerType {
//♠♥♦♣
hei("♠",1),
hong("♥",2),
fang("♦",3),
mei("♣",4);
private String type;
private int typeIndex;
PokerType(String type,int typeIndex) {
this.type = type;
this.typeIndex = typeIndex;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getTypeIndex() {
return typeIndex;
}
public void setTypeIndex(int typeIndex) {
this.typeIndex = typeIndex;
}
public static PokerType getPokerTypeByIndex(int i) {
System.out.println(i);
for (PokerType pokerType : PokerType.values()) {
if(pokerType.typeIndex == i)
return pokerType;
}
return null;
}
}
7.6.2(附加题)输入两个小数,先将他们的整数部分拿出求和, 如果大于10,就拿出他们的小 数部分的求和,如果他们小数部分的和大于1.0 就输出“这两个数的小数部分大于1.0”,否 则就说“这两个数的小数部分小于1.0”; 如果他们整数部分求和不大于10,就拿出他们的 小数部分的求差,如果他们小数部分的差大于0.0 就输出“这两个数的小数部分的差大于 0.0”,否则就说“这两个数的小数部分的差小于0.0”;(嵌套if)
public void test62(){
Scanner scanner = new Scanner(System.in);
double v1 = scanner.nextDouble();
double v2 = scanner.nextDouble();
double floor1 = Math.floor(v1);
double floor2 = Math.floor(v2);
if(floor1+floor2>10){
if (v1-floor1+v2-floor2>1.0){
System.out.println("这两个数的小数部分和大于1.0");
}else if(v1-floor1+v2-floor2<1.0){
System.out.println("这两个数的小数部分和小于1.0");
}
}else {
if (v1-floor1-(v2-floor2)>0.0){
System.out.println("这两个数的小数部分差大于0.0");
}else if(v1-floor1-(v2-floor2)<0.0){
System.out.println("这两个数的小数部分差小于0.0");
}
}
}
7.7 获取系统的当前时间,并打印以下信息 xxxx年xx月xx日 xx时xx分xx秒
@Test
public void test7(){
Date date = new Date();
String format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(date);
System.out.println(format);
}
7.8 输出2~32之间16个偶数的和
public void test8(){
int sum = 0;
for (int i = 2; i <=32 ; i=i+2) {
sum+=i;
}
System.out.println(sum);
}
7.9 求园面积结果保留5位小数
public void test9(){
int r = 2;
double area = Math.PI*r*r;
System.out.printf("%.5f",area);
}
7.10 使用StringBuilder附加字符串
public void test10(){
StringBuilder stringBuilder = new StringBuilder("123");
StringBuilder append = stringBuilder.append("21");
System.out.println(append);
}