Java练习题 - Math类

第一题:需求实现
  • 反转键盘录入的字符串。

  • 代码实现,效果如图所示:

  • 开发提示:

    • 使用字符数组保存原始字符,利用Random类生成随机索引。
  • 参考答案:


        public class Test1 {
            public static void main(String[] args) {
                Scanner scanner = new Scanner(System.in);
                String next = scanner.next();
                System.out.println("录入的字符串:" + next);
                String s = reverseStr(next);
                System.out.println("反转的字符串:"+ s);
            }
        
            public static String reverseStr(String  str){
                String s = "";
                char[] chars = str.toCharArray();
                for (int i = chars.length - 1; i >= 0; i--) {
                    s +=chars[i] ;
                }
                return s;
            }
        }
第二题:需求实现
  • 键盘录入QQ号码,验证格式的正确性。
    • 必须是5—12位数字。
    • 0不能开头。
  • 代码实现,效果如图所示:
  • 参考答案:

        public class Test2 {
            public static void main(String[] args) {
                //1.键盘输入一个qq号码字符串
                Scanner sc = new Scanner(System.in);
                String qq = sc.next();
                //2.调用checkQQ (String qq)方法内实现验证。
                boolean isOK = checkQQ(qq);
                //3.打印验证的结果
                System.out.println("这个QQ号码是否正确:" + isOK);
            }
        
            /*
             * 定义方法:checkQQ (String qq)方法内实现验证
             * 指定方法的名称:checkQQ
             * 指定方法的参数:String qq
             * 指定方法的返回值:boolean
             */
            public static boolean checkQQ(String qq){
                //1.验证字符串的长度5-12位之间;
                if (qq.length()<5 || qq.length()>12 ) {
                    return false; //说明qq号码的长度不正确
                }
                //2.验证首位字符不能是字符0;只能是字符'1'--'9'
                if (qq.charAt(0) == '0') {
                    return false;
                }
                //3.验证字符串中的每个字符都必须是数字字符‘0’-‘9’之间的字符
                for (int i = 0; i < qq.length(); i++) {
                    char ch = qq.charAt(i);
                    //判断字符是否在 数字字符‘0’-‘9’之间的字符
                    if (ch<'0' || ch>'9') {
                        return false;//说明qq号码中含有非数字字符
                    }
                }
                //4.上述验证都通过了,说明qq号码是正确的
                return true;
            }
        }
第三题:需求实现
  • 字符串查找。
    • 键盘录入一个大字符串,再录入一个小字符串。
    • 统计小字符串在大字符串中出现的次数。
  • 代码实现,效果如图所示:
  • 参考答案:

public class Test3 {
    /*
     * 分析以下需求,并用代码实现
        1.键盘录入一个大字符串,再录入一个小字符串
        2.统计小字符串在大字符串中出现的次数
        3.代码运行打印格式:
            请输入大字符串:woxihuanhaha,hahabutongyuhehe,wulunshihahahaishihehe,xuexijiushikaixin
            请输入小字符串:haha
            控制台输出:小字符串haha,在大字符串woxihuanhaha,hahabutongyuhehe,wulunshihahahaishihehe,xuexijiushikaixin中共出现4次
     */

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 1.键盘录入一个大字符串,再录入一个小字符串
        System.out.print("请输入大字符串:");
        String big = sc.nextLine();
        System.out.print("请输入小字符串:");
        String small = sc.nextLine();
        // 2.统计小字符串在大字符串中出现的次数
        int count = getCount(big, small);
        // 3.代码运行打印格式:
        System.out.println("小字符串" + small + ",在大字符串中共出现" + count + "次");
    }

    /*
     * 方法功能:统计小字符串在大字符串中出现的次数
     * 参数:big 代表大字符串
     * 参数:small 代表小字符串
     * 返回值:小字符串在大字符串中出现的次数
     */
    public static int getCount(String big, String small) {
        int index = 0;
        int count = 0;
        /*
         * indexOf(String str, int fromIndex)
         * 该方法作用:从fromIndex位置开始查找,字符串str第一次出现的位置;若没找到,放回-1
         */
        while ((index = big.indexOf(small, index)) != -1) {
            index++;
            count++;
        }
        return count;
    }
}
第四题:需求实现
  • 替换某字符串中的某字符串。
    • 键盘录入一个srcStr字符串,再录入一个delStr字符串。
    • 删除该字srcStr符串中的所有delStr字符串。
  • 代码实现,部分效果如图所示:
  • 参考答案:


        public class Test4 {
            public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                // 1.键盘录入一个源字符串由字符串变量scrStr接收
                System.out.print("请输入源字符串:");
                String srcStr = sc.nextLine();
                // 2.键盘录入一个要删除的字符串由字符串变量delStr接收
                System.out.print("请输入要删除的字符串:");
                String delStr = sc.nextLine();
                // 3.删除该字scrStr符串中的所有delStr字符串(最终的字符串中不能包含delStr),要求打印删除后的结果以及删除了几个delStr字符串
                printCount(srcStr, delStr);
            }
        
            //删除该字scrStr符串中的所有delStr字符串(最终的字符串中不能包含delStr),要求打印删除后的结果以及删除了几个delStr字符串
            private static void printCount(String srcStr, String delStr) {
                //删除后的结果
                String resultStr = srcStr.replace(delStr, "");
                //删除了几个delStr字符串
                int count = (srcStr.length() - resultStr.length()) / delStr.length();
        
                System.out.println("源字符串中总共包含:"+ count +" 个 "+ delStr +" ,\r\n删除"+ delStr +"后的字符串为: "+ resultStr);
            }
        }
第五题:需求实现
  • 生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。
  • 代码实现,效果如图所示:
  • 参考答案:

        public class Test5 {
            public static void main(String[] args) {
                double random = Math.random()*100;
                System.out.println("随机数为:");
                System.out.println(random);
                String str = random+"";
                int index = str.indexOf(".");
                //System.out.println(index);
                String substring = str.substring(0, index + 3);
                System.out.println("转换为:");
                System.out.println(substring);
            }
        }
第六题:需求实现
  • 筛选字符串。

    • 定义ArrayList集合,存入多个字符串。
    • 长度大于5的字符串,打印删除后的集合。
  • 代码实现,效果如图所示:

  • 参考答案:

    public class Test6 {
        public static void main(String[] args) {
            ArrayList<String> list = getArrayList();
            System.out.println("源字符串:");
            System.out.println(list);
            //删除集合中长度大于5的元素
            delStrsFromList01(list);
            System.out.println("删除后:");
            System.out.println(list);
        }
    
        //返回存储多个字符串的ArrayList集合
        private static ArrayList<String> getArrayList() {
            ArrayList<String> list = new ArrayList<>();
            list.add("bca");
            list.add("dadfa");
            list.add("dddaaa");
            list.add("你好啊");
            list.add("我来啦,你干嘛呢");
            list.add("别跑啊");
            return list;
        }
    
        //删除list集合中所有长度>5的字符串
        private static void delStrsFromList01(ArrayList<String> list) {
            //创建ArrayList集合对象
            ArrayList<String> newList =  new ArrayList<String>();
            //遍历原集合对象
            for(int i = 0;i<list.size();i++) {
                //获取当前元素
                String str = list.get(i);
                //如果str的长度大于等于5
                if(str.length()>5) {
                    newList.add(str);//将str添加到新集合中
                }
            }
            //遍历新集合
            for(Object str : newList) {
                //因为新集合中的元素就是要删除的元素
                list.remove(str);
            }
        }
    }

第七题:需求实现
  • 判断回文字符串。如果一个字符串,从前向后读和从后向前读,都是一个字符串,称为回文串,比如mom,dad,noon。

  • 代码实现,效果如图所示:

  • 参考答案:

    public class Test7 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String next = scanner.next();
            boolean p = isP(next);
            System.out.println(
                    "回文数:" + p
            );
        }
    
        public static boolean isP(String str) {
            int start = 0;
            int end = str.length() - 1;
            while (start < end) {
                if (str.charAt(start) != str.charAt(end)) {
                    return false;
                }
                start++;
                end--;
            }
            return true;
        }
    }
第八题:需求实现
  • 模拟简单计算器,可以运算+,—,*,/,%。

    • 接收三个参数,一个整数,一个运算符,另一个整数。
    • 计算出运算结果。
    • 无法运算时,返回null。
  • 代码实现,效果如图所示:

  • 参考答案:

        public class Test8 {
            public static void main(String[] args) {
                Scanner scanner = new Scanner(System.in);
                int a = scanner.nextInt();
                String next = scanner.next();
                int b = scanner.nextInt();
                String count = count(a, next, b);
                System.out.println(a +next +b +"="+count);
            }
        
            public static String count(int a, String op , int b ){
                int r=0;
                if ("+".equals(op)){
                    r = a+b;
                }else  if ("-".equals(op)){
                    r = a-b;
                }else  if ("*".equals(op)){
                    r = a*b;
                }else  if ("/".equals(op)){
                    r = a/b;
                }else  if ("%".equals(op)){
                    r = a%b;
                }else {
                    return null;
                }
        
                return r+"";
            }
        }
第九题:需求实现
  • 校验密码是否合法。

    • 必须至少8个字符。
    • 必须至少2个大写字符。
    • 必须只有字母和数字。
  • 代码实现,效果如图所示:

  • 参考答案:


        public class Test9 {
            public static void main(String[] args) {
                String s = "qweRY123";
                System.out.println(s+" 密码是否合法:"+isV(s));
            }
        
            public static boolean  isV(String pwd){
                if (pwd.length()<8){
                    return false;
                }
        
                int countA = 0;
                char[] chars = pwd.toCharArray();
                for (int i = 0; i < chars.length; i++) {
                    char ch  = chars[i];
                    // 2个 大写字符
                    if (ch >='A' && ch<='Z'){
                        countA++;
                    }
        
                    // 字母数字
                    if ((ch < '0'|| ch>'9') && (ch < 'A'|| ch>'Z')&&(ch < 'a'|| ch>'z')) {
        
                        return false;
                    }
                }
                if (countA < 2) {
                    return false;
                }
                return true;
            }
        }
第十题:需求实现
  • 模拟用户登录。

    • 定义用户类,属性为用户名和密码。
    • 使用集合存储多个用户对象。
    • 录入用户和密码,对比用户信息,匹配成功登录成功,否则登录失败。
    • 登录失败时,当用户名错误,提示没有该用户。
    • 登录失败时,当密码错误时,提示密码有误。
  • 代码实现,效果如图所示:

  • 参考答案:


        public class Test10 {
            static ArrayList<User> list = new ArrayList<>();
            static {
                list.add(new User("jack", "1234"));
                list.add(new User("rose", "5678"));
                list.add(new User("tom", "0000"));
                for (int i = 0; i < list.size(); i++) {
                   list.get(i).show();
                }
            }
            public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入用户名");
                String username = sc.nextLine();
                System.out.println("请输入密码");
                String password = sc.nextLine();
                User  u = new User(username,password);
                String login = login(u);
                System.out.println("登录结果:"+login);
            }
        
            public static String login(User  user){
               String msg  = "";
                String n = user.getUsername();
                String p = user.getPwd();
                for (int i = 0; i < list.size(); i++) {
                    User u  = list.get(i);
                    String name = u.getUsername();
                    String pwd = u.getPwd();
                    if(name.equals(n)) {
                        if (pwd.equals(p)) {
                            return "登录成功";
                        }else {
                          //  密码错误
                           return  "密码错误";
                        }
                    }else{
                        msg = "用户名不存在"; //用户名不匹配
                      continue;
                    }
                }
                return msg ;
            }
        }
        
        class User{
            private String username;
            private String pwd;
        
            public User() {
            }
        
            public User(String username, String pwd) {
                this.username = username;
                this.pwd = pwd;
            }
        
            public String getUsername() {
                return username;
            }
        
            public void setUsername(String username) {
                this.username = username;
            }
        
            public String getPwd() {
                return pwd;
            }
        
            public void setPwd(String pwd) {
                this.pwd = pwd;
            }
        
            public void show() {
                System.out.println(username+"-"+pwd);
            }
        }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • 第一题:需求实现 随机验证码。随机生成十组六位字符组成的验证码。验证码由大小写字母、数字字符组成。 代码实现,效果...
    辽A丶孙悟空阅读 1,785评论 0 14
  • 第一题:需求实现 模拟大乐透号码:一组大乐透号码由10个1-99之间的数字组成定义方法,打印大乐透号码信息 代码实...
    辽A丶孙悟空阅读 2,693评论 5 15
  • EXCEL小白的进阶之路 从16年3月申请的小号,到现在发表的微文,屈指可数,纠结于想要好的内容,好的页面排版,然...
    Rachelhaha阅读 935评论 0 0
  • 第一题:语法练习 语法点:方法定义,方法重载 按步骤编写代码,效果如图所示: 编写步骤:定义类 Test1,类中定...
    辽A丶孙悟空阅读 2,420评论 0 11
  • 书本才开始的时候,先就对社会上的一些道德进行了讨论,记忆犹新的是社会约束,社会规定的东西,有的时候并不一定是对的,...
    peterzyzson阅读 1,865评论 0 6