1、練習-轉換羅馬數字
鍵盤錄入一個字符串
要求1:長度為小于等于9
要求2:只能是數字
將內容變成羅馬數字
下面是阿拉伯數字跟羅馬數字的對比關系:
Ⅰ-1
Ⅱ-2
Ⅲ-3
Ⅳ-4
Ⅴ-5
Ⅵ-6
Ⅶ-7
Ⅷ-8
Ⅸ-9
注意點:羅馬數字里面沒有0的,如果鍵盤錄入的數字包含0,可以變成”“(長度為0的字符串)
2、第一種解題思想(查表法)
package stringdemo;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str;while (true) {System.out.println("請輸入一個字符串");str = sc.next();boolean flag = checkStr(str);if (flag) {break;} else {System.out.println("當前的字符串不符合規則,請重新輸入");continue;}}StringBuilder sb = new StringBuilder();for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);int number = c - 48;String s = changeLuoMa(number);sb.append(s);}System.out.println(sb);}/*Ⅰ-1 Ⅱ-2 Ⅲ-3 Ⅳ-4 Ⅴ-5 Ⅵ-6 Ⅶ-7 Ⅷ-8 Ⅸ-9 */public static String changeLuoMa(int number) {String[] arr = {"", "Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ", "Ⅷ", "Ⅸ"};return arr[number];}public static boolean checkStr(String string) {if (string.length() > 9) {return false;}for (int i = 0; i < string.length(); i++) {char c = string.charAt(i);if (c < '0' || c > '9') {return false;}}return true;}} D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=2084:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.Test 請輸入一個字符串 123456789 ⅠⅡⅢⅣⅤⅥⅦⅧⅨProcess finished with exit code 0
3、第二種解題思想(switch)
package stringdemo;import java.util.Scanner;public class TestCase {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str;while (true) {System.out.println("請輸入一個字符串");str = sc.next();boolean flag = checkStr(str);if (flag) {break;} else {System.out.println("當前的字符串不符合規則,請重新輸入");continue;}}StringBuilder sb = new StringBuilder();for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);String s = changeLuoMa(c);sb.append(s);}System.out.println(sb);}/*Ⅰ-1 Ⅱ-2 Ⅲ-3 Ⅳ-4 Ⅴ-5 Ⅵ-6 Ⅶ-7 Ⅷ-8 Ⅸ-9*/public static String changeLuoMa(char number) {String str = switch (number) {case '0' -> "";case '1' -> "Ⅰ";case '2' -> "Ⅱ";case '3' -> "Ⅲ";case '4' -> "Ⅳ";case '5' -> "Ⅴ";case '6' -> "Ⅵ";case '7' -> "Ⅶ";case '8' -> "Ⅷ";case '9' -> "Ⅸ";default -> str = "";};return str;}public static boolean checkStr(String string) {if (string.length() > 9) {return false;}for (int i = 0; i < string.length(); i++) {char c = string.charAt(i);if (c < '0' || c > '9') {return false;}}return true;} } D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=2435:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.TestCase 請輸入一個字符串 123456789 ⅠⅡⅢⅣⅤⅥⅦⅧⅨProcess finished with exit code 0
4、調正字符串
給定兩個字符串,A和B
A的旋轉操作就是將A最左邊的字符移動到最右邊。
例如,若A='abcde',在移動一次之后結果就是'bcdea'。
如果在若干次調整操作之后,A能變成B,那么返回True。
如果不能匹配成功,則返回false
4.1、如果我們看到要修改字符串的內容,可以有兩種方法:
- 用subString進行截取,把左邊的字符截取出來拼接到右側去
- 可以把字符串先變成一個字符數組,然后調整字符數組里面數據,最后再把字符數組變成字符串。
4.1.1、第一種思路(subString)
?package stringdemo;public class Case1 {public static void main(String[] args) {String strA = "abcde";String strB = "cdeab";boolean result = check(strA, strB);System.out.println(result);}public static boolean check(String strA, String strB) {for (int i = 0; i < strA.length(); i++) {strA = rotate(strA);if (strA.equals(strB)) {return true;}}return false;}public static String rotate(String str) {char first = str.charAt(0);String end = str.substring(1);return end + first;} } D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=3417:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.Case1 trueProcess finished with exit code 0?
4.1.2、第二種思路
package stringdemo;public class Case2 {public static void main(String[] args) {String strA = "abcde";String strB = "cdeab";boolean result = check(strA, strB);System.out.println(result);}public static boolean check(String strA, String strB) {for (int i = 0; i < strA.length(); i++) {strA = rotate(strA);if (strA.equals(strB)) {return true;}}return false;}public static String rotate(String str) {char[] arr = str.toCharArray();char first = arr[0];for (int i = 1; i < arr.length; i++) {arr[i - 1] = arr[i];}arr[arr.length - 1] = first;String result = new String(arr);return result;} } D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=3381:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\Exception stringdemo.Case2 trueProcess finished with exit code 0