【Java】字符串编程练习题
前言
日常前言。
本文適合萌新,本文適合萌新,本文適合萌新~~~~
這次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),還請指出。
總結
以上是生活随笔為你收集整理的【Java】字符串编程练习题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: for循环两个分号之间不要乱加判断条件(
- 下一篇: 用好String、String[]和ch