Java里面有关String的编程练习题

前言

日常前言。

本文适合萌新,本文适合萌新,本文适合萌新~~~~
这次share一些Java基本语法的应用Demo,是我初学Java时候写的,都是命令行小程序,蛮有纪念意义的。
这里面的很多程序都做了比较细致的处理,可能有些方面不那么优化,但毕竟是我初学时的水平,见谅。
感兴趣的Java萌新可以看过来~~

Q1:将输入的任意0-999的整数全部补全为三位数输出(不足三位补0)

import java.util.Scanner;

/**
 * 将输入的任意0-999的整数全部补全为三位数输出(不足三位补0)
 */
public class StringTest1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (true) {
            System.out.println("请输入一个999以下的非负整数");
            String input = scan.next();
            try {
                int judgeNumber = Integer.parseInt(input);
                if (judgeNumber < 0 || judgeNumber > 999) {
                    System.out.println("输入不合法");
                } else if (judgeNumber < 10) {
                    System.out.println("00" + judgeNumber);        
                } else if (judgeNumber < 100) {
                    System.out.println("0" + judgeNumber);
                } else {
                    System.out.println(judgeNumber);
                }
            } catch (NumberFormatException e) {
                System.out.println(e);
            }
            System.out.println("是否退出?Y(不区分大小写)/任意输入");
            if (scan.next().equalsIgnoreCase("Y")) {
                break;
            }
        }
        scan.close();
    }

}

Q2:输入一个手机号,将中间四位使用星号替代

import java.util.Scanner;

/**
 * 输入一个手机号,将中间四位使用星号替代
 */
public class StringTest2 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (true) {
            System.out.println("请输入一个11位的电话号码");
            //必须long,int会爆掉
            String input = scan.next();
            try {
                Long.parseLong(input);
                if (input.length() != 11) {
                    System.out.println("输入电话号码长度不合法");
                } else {
                    System.out.println(input.substring(0, 3) + "****" + input.substring(7 ,11));
                }
            } catch (NumberFormatException e) {
                System.out.println("输入了不合法的字符...\n" + e);
            }
            System.out.println("是否退出?Y(不区分大小写)/任意输入");
            if (scan.next().equalsIgnoreCase("Y")) {
                break;
            }
        }
        scan.close();
    }
}

注意注意注意:手机号11位,直接用int会爆掉,切记切记!

Q3:从命令行输入两个字符串类型的数值,并计算输出的两个数值的和

import java.util.Scanner;

/**
 * 从命令行输入两个字符串类型的数值,并计算输出的两个数值的和
 */
public class StringTest3 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (true) {
            System.out.print("请输入字符串1:\nString1>");
            var var1 = scan.nextLine();
            System.out.print("请输入字符串1:\nString1>");     
            var var2 = scan.nextLine();
            try {
                var var3 = Double.parseDouble(var1);
                var var4 = Double.parseDouble(var2);
                System.out.println(var3 + var4);
            } catch (NumberFormatException e) {
                System.out.println("输入非数值" + e);
            }
            System.out.println("是否退出?Y(不区分大小写)/其他任意输入");
            if (scan.next().equalsIgnoreCase("Y")) {
                break;
            }    
        }
        scan.close();
    }

}

Q4:统计输入的字符串中’e’的频数

import java.util.Scanner;

/**
 * 统计输入的字符串中'e'的频数
 */
public class StringTest4 {
    public static int getNumber(String var) {
        int counter = 0;
        char[] charArray = var.toCharArray();
        for (char c : charArray) {
            if (c == 'e') {
                counter++;
            }
        }
        return counter; 
    }
    
    public static void main(String[] args) {
        System.out.println("请输入任意的内容,输入exit退出");
        Scanner scan = new Scanner(System.in);
        String temp = scan.next();
        while (!temp.equals("exit")) {
            System.out.println("'e'出现的频数是: " +getNumber(temp));
            System.out.println("请输入任意的内容,输入exit退出");
            temp = scan.next();
        }
        scan.close();
    }

}

Q5:生成十个0-100之间的随机数,放到数组中,然后排序输出

import java.util.Random;
import java.util.Arrays;
import java.util.Scanner;

/**
 * 生成十个0-100之间的随机数,放到数组中,然后排序输出
 */
public class StringTest5 {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner scan = new Scanner(System.in);
        while (true) {
            int[] array = new int[10];
            for (int i = 0; i < 10; i++) {
                array[i] = random.nextInt(101);
            }
            //Arrays.sort(array);
            Arrays.parallelSort(array);
            for (int i : array) {
                System.out.print(i + " ");
            }   
            System.out.println("\n是否退出?Y(不区分大小写)/任意输入");
            if (scan.next().equalsIgnoreCase("Y")) {
                break;
            }
        }
        scan.close();
    }

}

Q6:分别在控制台输入字符串和子字符串,并计算字符串中子字符串 出现的次数

import java.util.Scanner;

/**
 * 分别在控制台输入字符串和子字符串,并计算字符串中子字符串 出现的次数
 */
public class StringTest7 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入字符串\nMainString>");
        var mainStr = scan.nextLine();
        System.out.print("请输入待检查的子串\nSubString>");
        var subStr = scan.nextLine();
        var mainLengrh = mainStr.length();
        var subLength = subStr.length();
        var count = 0;
        for (var i = 0; i <= mainLengrh - subLength; i++) {
            if (mainStr.substring(i, i+subLength).equals(subStr)) {
                count++;
            }
        }
        System.out.println(count);
        scan.close();
    }
}

我怎么这么喜欢这种憨憨的解法???

Q7:统计输入的字符串中中文字符、英文字符、0-9数字字符的分别的个数

import java.util.Scanner;

/**
 * 统计输入的字符串中中文字符、英文字符、0-9数字字符的分别的个数
 */
public class StringTest8 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int chineseCount = 0, engishCount = 0, digitCount = 0, otherCount = 0;
        while(true) {
            engishCount  = 0;
            chineseCount = 0;
            digitCount   = 0;
            otherCount   = 0;
            System.out.print("请输入待检查的字符串(输入exit退出)\nString>");
            var string = scan.next();
            if (string.equals("exit")) {
                break;
            }
            for(int i = 0; i < string.length(); i++) {
                var character = string.charAt(i);
                if(character >= '0' && character <= '9') {
                    digitCount++;
                } else if ((character >= 'a' && character <= 'z') || (character >= 'A' && character <= 'Z')) {
                    engishCount++;
                } else if ((character < '0' && character >= 0) || (character > '9' && character < 'A')
                        || (character > 'Z' && character < 'a') || (character > 'a' && character <= 127)){
                    otherCount++;
                }
            }
            chineseCount = string.length() - digitCount - engishCount - otherCount;
            System.out.println("输入的字符串中:\n中文字符有:" + chineseCount + "个\n英文字符有"
                    + engishCount + "个\n0-9的数字有" + digitCount + "个");
        }
        scan.close();
    }

}

Q8:判断输入的数是不是正读反读都一样的回文数

import java.util.Scanner;

/**
 * 判断输入的数是不是正读反读都一样的回文数
 */
public class StringTest9 {
    public static boolean judge(String string1) {
        //这里用toCharArray()
        char[] charArray1 = string1.toCharArray();
        int length = charArray1.length;
        char[] charArray2 = new char[length];
        for (int i = 0; i < length; i++) {
            charArray2[length - i - 1] = charArray1[i];
        }
        String string2 = String.valueOf(charArray2);
        if (string1.equals(string2)) {
            return true;
        }
        return false;
    }
    
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(true) {
            System.out.print("请输入待检查的数字(输入exit退出)\nNumber>");
            var string = scan.next();
            if (string.equals("exit")) {
                break;
            }
            try {
                Integer.parseInt(string);
                if (judge(string)) {
                    System.out.println(string + "是回文数");
                } else {
                    System.out.println(string + "不是回文数");
                }
            } catch (NumberFormatException e) {
                System.out.println(e);
            }
        }
        scan.close();
    }

}

看看这回文数写的,这叫一个垃圾啊,我真的##¥@%@%!#,我是怎么有勇气直接发出来的???

思考题:

解析一个邮箱地址是否合法,如果合法则打印出用户名部分和该 邮箱所属的网站域名,如果邮箱地址不合法则显示不合法的原因
邮箱地址不合法的因素:
1)邮箱地址中不包含@或.
2)邮箱地址中含有多了@或.
3)邮箱地址中.出现在@的前面
4)用户名里有其他字符
需要创建一个类,类名:MailTest,类里面有一个返回值类型boolean的、名为testmail()的方法。
加油,我暂时懒得写题解了,对不起~~

结语

这些都是我刚学Java时写的,虽写的垃圾但也是当时的心血,偶然翻出来就像给萌新分享一下,希望有所帮助吧。
字符串String的使用在Java中太常见了,包括String与StringBuffer、StringBuilder,这些问题是要研究的。
初学萌新不熟悉的可以看java.lang.String的官方API文档,继续努力吧!
另外,年久失修,或许有bug(理论上应该没啥致命的bug),还请指出。

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页