转换罗马数字
解法一:
package com.itheima.test20;
import java.util.Scanner;
public class number {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str;
while (true) {
System.out.println("请输入一串数字:");
str = sc.next();
Boolean flag = checkNumber(str);
if (flag) {
break;
} else {
System.out.println("格式错误,请重新输入");
}
}
StringBuilder strend = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
int number = c - 48;
String s = huanNumber(number);
strend.append(s);
}
System.out.println(strend);
}
public static String huanNumber(int number) {
String[] str = {"", "Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ", "Ⅷ", "Ⅸ"};
return str[number];
}
public static Boolean checkNumber(String str) {
if (str.length() > 9) {
return false;
} else {
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c < '0' || c > '9') {
return false;
}
}
}
return true;
}
}
解法二:
package com.itheima.test20;
import java.util.Scanner;
public class numberCase {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str;
while (true) {
System.out.println("请输入一串数字:");
str = sc.next();
Boolean flag = checkNumber(str);
if (flag) {
break;
} else {
System.out.println("格式错误,请重新输入");
}
}
StringBuilder strend = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
String s = huanNumber(c);
strend.append(s);
}
System.out.println(strend);
}
public static String huanNumber(char ch) {
String str = switch (ch) {
case '0' -> "";
case '1' -> "Ⅰ";
case '2' -> "Ⅱ";
case '3' -> "Ⅲ";
case '4' -> "Ⅳ";
case '5' -> "Ⅴ";
case '6' -> "Ⅵ";
case '7' -> "Ⅶ";
case '8' -> "Ⅷ";
case '9' -> "Ⅸ";
default -> "";
};
return str;
}
public static Boolean checkNumber(String str) {
if (str.length() > 9) {
return false;
} else {
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c < '0' || c > '9') {
return false;
}
}
}
return true;
}
}
调整字符串
解法一
package com.itheima.test21;
public class Rotate {
public static void main(String[] args) {
String strA = "ABC";
String strB = "CAB";
Boolean flag = check(strA, strB);
if (flag) {
System.out.println("匹配成功");
} else {
System.out.println("匹配失败");
}
}
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 strA) {
String str = strA.substring(1);
String first = strA.substring(0,1);
return str + first;
}
}
解法二
package com.itheima.test21;
public class RotateCase {
public static void main(String[] args) {
String strA = "ABC";
String strB = "CAB";
Boolean flag = check(strA, strB);
if (flag) {
System.out.println("匹配成功");
} else {
System.out.println("匹配失败");
}
}
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 strA) {
char[] arr = strA.toCharArray();
char first = arr[0];
for (int i = 1; i < arr.length; i++) {
arr[i - 1] = arr[i];
}
arr[arr.length - 1] = first;
return new String(arr);
}
}
练习
练习一
键盘输入任意字符串,打乱里面的内容
package com.itheima.test22;
import java.util.Random;
import java.util.Scanner;
public class Homework01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
char[] arr = str.toCharArray();
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
int index = r.nextInt(arr.length);
char temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
String newStr = new String(arr);
System.out.println(newStr);
}
}
练习二
生成验证码
内容:可以是小写字母,也可以是大写字母,还可以是数字
规则:
长度为5
内容中是四位字母,1位数字。
其中数字只有1位,但是可以出现在任意的位置。
package com.itheima.test22;
import java.util.Random;
public class Homework02 {
public static void main(String[] args) {
char[] arr = new char[52];
for (int i = 0; i < arr.length; i++) {
if (i <= 25) {
arr[i] = (char) (97+i);
} else {
arr[i] = (char) (65 + i - 26);
}
}
String str = "";
Random r = new Random();
for (int i = 0; i < 4; i++) {
int num = r.nextInt(arr.length);
str = str + arr[num];
}
int number = r.nextInt(10);
str = str + number;
char[] chs = str.toCharArray();
for (int i = 0; i < chs.length; i++) {
int index = r.nextInt(chs.length);
char temp = chs[i];
chs[i] = chs[index];
chs[index] = temp;
}
String result = new String(chs);
System.out.println(result);
}
}
练习三
请编写程序,由键盘录入一个字符串,统计字符串中英文字母和数字分别有多少个。比如:Hello12345World中字母:10个,数字:5个。
package com.itheima.test22;
import java.util.Scanner;
public class Homework03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
str = str.toLowerCase();
int word = 0;
int num = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= 'a' && c <= 'z') {
word++;
} else if (c >= '0' && c <= '9') {
num++;
}
}
System.out.println(word);
System.out.println(num);
}
}
练习四
请定义一个方法用于判断一个字符串是否是对称的字符串,并在主方法中测试方法。例如:“abcba”、"上海自来水来自海上"均为对称字符串。
package com.itheima.test22;
public class Homework04 {
public static void main(String[] args) {
String str = "上海自来水来自海上";
if (str == null) {
System.out.println("没有输入");
} else {
StringBuilder sb = new StringBuilder(str);
sb.reverse();
String result = sb.toString();
if (str.equals(result)) {
System.out.println("是回文数");
} else {
System.out.println("不是回文数");
}
}
}
}