[Java] 纯文本查看 复制代码
package bean;
public class Person {
private String name;
private int age;
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//toString和equals的重写反正是个人习惯,也不耗费什么时间,
//重写hashcode是为了让测试类在写出时顺序与录入时一致
@Override
public String toString() {
return "[name=" + name + ", age=" + age + "]";
}
@Override
public int hashCode() {
return 1;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
[Java] 纯文本查看 复制代码
package code;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
import bean.Person;
public class Tes02 {
public static void main(String[] args) throws IOException {
String[] str = {"奶昔","加多宝","啤酒","白酒"};
Map<Person, String> map = new HashMap<>();
for (int i = 0; i < 3; i++) {
Person p = getPerson();
map.put(p, str[getDrink(p)]);
}
BufferedWriter bw = new BufferedWriter(new FileWriter("Person_info.txt"));
for (Person key : map.keySet()) {
bw.write(key.getName()+":"+key.getAge()+":"+map.get(key));
bw.newLine();
}
bw.close();
}
//这里题目没有要求考虑异常情况,所以就先这么写,二楼附上新的getPerson()和解决办法;
@SuppressWarnings("resource")
public static Person getPerson() {
System.out.println("请录入人名和年龄以,分隔(格式为:\t姓名,年龄)");
String input = new Scanner(System.in).nextLine();
String[] s = input.split(",");
return new Person(s[0],Integer.parseInt(s[1]));
}
//使用递归调用直到未满十八岁者得到的饮料不为啤酒或白酒;三元运算符精简代码
private static int getDrink(Person p) {
//匿名对象减少代码;
int d = new Random().nextInt(4);
return p.getAge()<18 && d > 1 ? getDrink(p): d;
}
}
[Java] 纯文本查看 复制代码
private static Scanner sc =new Scanner(System.in);
private static Person getPerson() {
System.out.print("请录入人名和年龄以,分隔(格式为:\t姓名,年龄):");
String[] s;
do {
s = sc.nextLine().split(",");
} while (!isOK(s));
return new Person(s[0],Integer.parseInt(s[1]));
}
private static boolean isOK(String[] s) {
if (s.length!=2) {
// System.out.println("录入错误,请重输:");
return false;
}
// System.out.println(s[1].matches("\\d*")? "录入成功!" : "录入错误,请重输:");
return s[1].matches("\\d*");
}