java练习题及面试题案例

双色球-----用数组实现
    
    双色球规则红球33选6,蓝球16选1,不允许重复。
使用Math类的random()方法在1到33内随机产生6个红球号码,每产生一个判断是否已经在数组中存在,不存在则保存于数组,否则重选。再从1到16间随机产生一个蓝球号码
public static void main(String[] args) {
        //获取6个随机数添加到数组中,同时判断数组中是否存在该随机数,如果存在再随机生成一个
        //第7个随机数正常生成即可        

        int[] nums = new int[7];

        for (int i = 0; i < 6; i++) {
            int num = (int) (Math.random() * 99 + 1);
            //判断如果不重复就放在数组中,如果重复再产生随机数
            while (exists(nums, num)) {
                num = (int) (Math.random() * 99 + 1);
            }

            nums[i] = num;
        }

        int num = (int) (Math.random() * 16 + 1);
        nums[nums.length - 1] = num;

        System.out.println("====双色球====");
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i] + " ");
        }
    }

    public static boolean exists(int[] nums, int num) {
        for (int i = 0; i < nums.length; i++) {
            //遍历数组,如果产生的数和数组一样就true
            if (nums[i] == num) {
                return true;
            }
        }
        return false;
    }

 双色球-----用list集合实现

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < 6; i++) {
            //判断
            int num = (int) (Math.random() * 33 + 1);

            while (exists(list, num)) {
                num = (int) (Math.random() * 33 + 1);
            }

            //另一种判断方法,调用contains方法判断即可
            while (list.contains(num)) {
                num = (int) (Math.random() * 33 + 1);
            }

            //如果不重复就添加到集合中
            list.add(num);
        }

        int num = (int) (Math.random() * 16 + 1);
        list.add(num);

        System.out.println("=====双色球=====");
        /*list.stream().forEach(integer -> {
            System.out.print(integer+" ");
        });*/

        for (int i = 0; i < list.size()-1; i++) {
            System.out.print(list.get(i)+" ");
        }
        System.out.println();
        System.out.println("蓝色球为:"+list.get(6));
        

    }

    public static boolean exists(ArrayList<Integer> list, int num) {
        for (int i = 0; i < list.size(); i++) {
            if (num == list.get(i)) {
                return true;
            }
        }
        return false;
    }

面试题:统计字符串中字符出现的次数

public static void main(String[] args) {
        String str = "no zuo no die why you try no try no high give me five";
        //分割字符串得到n个单词
        String[] strings = str.split(" ");

        HashMap<Object, Object> hs = new HashMap<>();

        for (int i = 0; i < strings.length; i++) {
            //看hs中是否存在此单词
            String s = strings[i];
            if (hs.containsKey(s)) {
                //map中已经有该单词了
                // 只需要把原来的count取出来+1 再放进去
                hs.put(s, (Integer) hs.get(s) + 1);
            } else {
                //map中没有此元素,直接把1放进去
                hs.put(s, 1);
            }

        }
        System.out.println(hs);
    }

面试题:判断string字符串问题

 public static void main(String[] args) {
        //常量池有个特性,放值之前会进行检查

        //找一块空间 存放“abcbcd”
        String str = "abc";
        str = str + "bcd";

        //找一块空间 存放“abc” 再放“bcd”
        //最后再找一块空间放“abcbcd”
        String str2 = "abc" + "bcd";
        String str3 = "abcbcd";

        //str和str2大概率会不相等,因为str2在常量池里并不会做拼接操作
        System.out.println(str == str2);    //false
        System.out.println(str==str3);      //false
        System.out.println(str2==str3);     //true
    }

判断java文件名是否正确,邮箱地址是否正确

要求:文件名必须是.java 结尾
邮箱格式 必须有@ .
@必须在.前面
 public static void main(String[] args) {
        //文件名必须是.java 结尾
        System.out.println("----欢迎进入作业提交系统----");
        System.out.println("请输入java文件名:");
        Scanner sc = new Scanner(System.in);
        String name = sc.next();
        System.out.println("请输入你的邮箱:");
        String email = sc.next();

//        //contain的意思是包含,不是结尾的意思,所以不能用这种办法
//        boolean b = name.contains(".java");
//
//        if (b) {
//            System.out.println("文件格式正确");
//        } else
//            System.out.println("文件格式不正确");

        //endsWith  (String suffix)     测试此字符串是否以指定的后缀结尾。 也可以用这个方法
        int index = name.lastIndexOf(".");

        if (index==-1){
            System.out.println("文件格式不正确");
        }else {
            String substring = name.substring(index + 1);//如果不加1,点也会算进去

            if (substring.equals("java")){
                System.out.println("正确");
            }else {
                System.out.println("不正确");
            }
        }

        //邮箱格式 必须有@ .
        //@必须在.前面
        //获取最后一个@的下标
        int index1 = email.lastIndexOf("@");
        //获取最后一个.的下标
        int index2 = email.lastIndexOf(".");
        if (index1!=-1&&index2!=-1&&index1<index2){
            System.out.println("正确");
        }else
            //没有@   输出没有@
            //没有.   输出没有.
            //@在.后面 输出@必须在.前面
            if (index1==-1&&index2==-1){
                System.out.println("没有添加@,.");
            }else if (index1==-1){
                System.out.println("没有添加@");
            }else if (index2==-1){
                System.out.println("没有添加.");
            }else if (index1>index2){
                System.out.println("@必须在.后面");
            }

    }

输入一个字符串,输入一个字符,判断该字符在字符串中出现的次数

 public static void main(String[] args) {
        System.out.println("请输入一个字符串:");
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        System.out.println("请输入要查找的字符:");
        String s = sc.next();

        HashMap<String, Integer> map = new HashMap<>();

        String[] strs = str.split("");

        for (int i = 0; i < strs.length; i++) {
            String temp = strs[i];
            if (map.containsKey(temp)) {
                map.put(temp,map.get(temp)+1);
            } else {
                map.put(temp, 1);
            }
        }

        Integer integer = map.get(s);
        if (integer==null){
            integer=0;
        }

        System.out.println(str+"    中包含"+integer+"个"+s);
        
    }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值