Java习题篇—字符串较难练习
- 键盘录入一个字符串,要求长度小于等于9,只能是数字
- 将内容变成罗马数字,罗马数字里面没有0,可以用 " " 代替
package StringTest;
import java.util.Scanner;
import java.util.StringJoiner;
public class Test01 {
public static void main(String[] args) {
//阿拉伯数字转换罗马数字
//键盘录入一个字符串,要求长度小于等于9
//只能是数字,将内容变成罗马数字,罗马数字里面没有0,可以用" "代替
Scanner sc = new Scanner(System.in);
String str = "";
while (true) {
System.out.println("请输入字符串:");
str = sc.next();
//长度只能小于等于9
if(str.length()>0&&str.length()<=9){
boolean flag = getNumber(str);
//如果是数字就跳出 不是数字就继续输入
if(flag) {
break;
}
else {
System.out.println("请重新输入:");
}
}
else {
System.out.println("请重新输入:");
}
}
System.out.println("第一步成功");
String result = getRom(str);
System.out.println(result);
}
// 判断是不是数字 成功返回true 否则返回false
public static boolean getNumber(String str){
boolean flag = true;
for (int i = 0; i < str.length(); i++) {
if(str.charAt(i)>='0'&&str.charAt(i)<='9') {
flag = true;
}
else {
flag = false;
}
}
return flag;
}
// 将数字转换成罗马数字 查表法
public static String getRom(String str){
// 定义一个字符数组方便查表 索引对应着 0--9
String[] strRom = {"","I","II","III","IV","V","VI","VII","VIII","IX"};
// 便利每个字符数字 然后再strRom中找到
String result = "";
StringJoiner sj = new StringJoiner(",","[","]");
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
int num = c - 48;
result = sj.add(strRom[num]).toString();
}
return result;
}
}
要求:
- 给定两个字符串,A B
- A的旋转操作就是将A最左边的字符移动到最右边
- 如:“abcd” —> “bcda”
- 如果在若干次操作之后,A能变成B,那么返回True否则False
package stringTest;
public class Test02 {
public static void main(String[] args) {
//给定两个字符串,A B
// A的旋转操作就是将A最左边的字符移动到最右边
// 如:"abcd" ---> "bcda"
// 如果在若干次操作之后,A能变成B,那么返回True否则False
//1.定义两个字符串
String A = "ABCDE"; //--BCDEA CDEAB DEABC EABCD ABCDE
String B = "CDEAB";
int count =0;
for (int i = 0; i < A.length(); i++) {
A = A.substring(1)+A.charAt(0);
System.out.println(A);
count++;
if(A.equals(B)) {
break;
}
System.out.println(count);
}
if(count==A.length())
System.out.println("False");
else
System.out.println("True");
}
}