Java实现“前世今生”测试

模拟网上的“前世今生”应用程序,通过输入今生的姓名来计算你前世的姓名。
PS:输入不合法可纠错。

import java.util.*;

public class PreviousAndPresent{
    private String name;        // 今生姓名
    private String FirstName;   // 姓
    private String LastName;    // 名

    // 输入处理
    public PreviousAndPresent(){
        Scanner sc = new Scanner(System.in);

        System.out.print("请输入你今生姓名:");
        this.name = sc.nextLine();

        sc.close();

        // 拆分name,忽略复姓
        if(name.length() >= 2){
            this.FirstName = name.substring(0, 1);
            this.LastName = name.substring(1, 2);
        }else{
            System.out.println("输入不合法,拜拜!");
            return;
        }

        // 计算
        calculate();
    }


    // 计算前世姓名
    public void calculate(){
        String previousName = ""; // 前世姓名

        // 生成姓
        int t1 = search(this.FirstName, Data.Present_FirstNames);
        if(t1 != -1)  // 存在
            previousName += Data.Previous_FirstName[t1/2];
        else  // 不存在,随机生成
            previousName += Data.Previous_FirstName[(int)(Math.random()*Data.Previous_FirstName.length)];

        // 同理,生成名
        int t2 = search(this.LastName, Data.Present_LastNames);
        if(t2 != -1)
            previousName += Data.Previous_LastName[t2/2];
        else
            previousName += Data.Previous_LastName[(int)(Math.random()*Data.Previous_LastName.length)];

        // 输出
        System.out.println("你前世的名字为:" + previousName);
    }

    // 查看Data类中是否存在arr数组中有str字符串,若存在返回在arr中索引位置,否则返回-1
    public int search(String str, String[] arr){
        for(int i=0; i<arr.length; i++)
            if(arr[i].equals(str)) return i;
        return -1;
    }

    // 主函数
    public static void main(String[] args){
        new PreviousAndPresent();
    }

}

class Data{

    // 姓 --> length=44
    public static final String[] Present_FirstNames = {"李", "王", "张", "刘", "陈", "杨", "赵", "黄", "周", "吴", "徐", "孙", "胡", "朱", "高", "林", "何", "郭", "马", "罗", "梁", "宋", "郑", "谢", "韩", "唐", "冯", "于", "董", "萧", "程", "曹", "袁", "邓", "许", "傅", "沈", "曾", "彭", "吕", "苏", "卢", "蒋", "蔡"};

    // 名 --> length=60
    public static final String[] Present_LastNames = {"嘉", "哲", "俊", "博", "妍", "乐", "佳", "涵", "晨", "宇", "怡", "泽", "子", "凡", "悦", "思", "奕", "依", "浩", "泓", "彤", "冰", "媛", "伊", "淇", "淳", "一", "洁", "茹", "清", "吉", "源", "渊", "和", "函", "妤", "宜", "云", "琪", "菱", "宣", "沂", "健", "信", "欣", "可", "洋", "萍", "荣", "榕", "含", "佑", "明", "雄", "梅", "芝", "英", "义", "淑", "乾"};


    // 前世姓 --> length=22
    public static final String[] Previous_FirstName = {"慕容", "任",  "厉", "钟离", "真", "唐", "东方", "敖", "白", "南宫", "竺", "司徒", "尉迟", "司空", "蓝", "邵", "西门", "颜", "莫", "欧阳", "尚", "上官"};

    // 前世名 --> length=30
    public static final String[] Previous_LastName = {"巫", "言", "洛", "枫", "涯", "夜", "痕", "清", "浪", "尘", "武", "遥", "风", "空", "遐", "竹", "涵", "偌", "伦", "滨", "珲", "璘", "永", "恒", "珠", "明", "岚", "舜", "翰", "天"};
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值