案例一:
键盘录入一个字符串
要求1: 长度为小于等于9
要求2:只能是数字
将内容变成罗马数字
下面是阿拉伯数字跟罗马数字的对比关系
I-1、II -2、Ill-3、IV-4、V -5、VI-6、VII- 7、VIII-8、IX - 9
注意点:
罗马数字里面是没有0的
如果键盘录入的数字包含0,可以变成””(长度为0的字符串)
Scanner sc = new Scanner(System.in);
System.out.println("请输入要转换的数字: ");
String input = sc.next();
while (true) { //死循环判断,仅当用户正确输入时退出
if (containOtherCharacter(input) == true && lengthEstimate(input) == true) {
break;
} else {
System.out.println("输入有误,请重新输入: ");
input = sc.next();
}
}
String[] dic = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
int a = input.charAt(i) - 48; //char对应转换为int时要先根据ASCII表,故应减去48
stringBuilder.append(dic[a]);
}
//直接打印stringBuilder即可,无需再转换回String
System.out.println("转换后的结果为: "+ stringBuilder);
}
//判断是否包含非数字字符
public static boolean containOtherCharacter(String s) {
//定义一个flag变量,假定全为数字,不满足时候修改
boolean flag = true;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) > '0' && s.charAt(i) < '9') {
} else {
flag = false;
}
}
return flag;
}
//判断长度是否超出9
public static boolean lengthEstimate(String s) {
if (s.length() > 9) {
return false;
} else {
return true;
}
}
案例二:
调整字符串
给定两个字符串, A和B
A的旋转操作就是将A最左边的字符移动到最右边
例如,若A=abcde',在移动一次之后结果就是bcdea'
如果在若干次调整操作之后,A能变成B,那么返回True
如果不能匹配成功,则返回false
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个值: ");
String value1 = sc.next();
System.out.println("请输入第二个值: ");
String value2 = sc.next();
//为什么string是引用类型但是可以做备份?
//因为string是不可变对象,一旦创建,就固定,改变内容就是新建,原地址抹去,存入新的地址;
String value1_bak = value1;
while (true){
String new_value1 = rotation(value1);
if (value2.equals(new_value1)){
System.out.println("true");
break;
}
value1 = new_value1;
//旋转完成一轮变回去时停止 返回没找到
if (value1_bak.equals(value1)){
System.out.println("false");
break;
}
}
}
//模拟旋转操作
public static String rotation(String s) {
StringBuilder stringBuilder = new StringBuilder();
char c = s.charAt(0);
String s_new = s.substring(1);
stringBuilder.append(s_new).append(c);
return stringBuilder.toString();
}
案例三:
键盘输入任意字符串,打乱内容
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串: ");
String s = sc.next();
Random random = new Random();
char[] s_char = new char[s.length()];
//该循环用于将string存入char数组, 或者直接用tochararray方法
for (int i = 0; i < s.length(); i++) {
s_char[i] = s.charAt(i);
}
//该循环用于对数组打乱
for (int i = 0; i < s_char.length; i++) {
char s_bak = s_char[i];
int r = random.nextInt(s_char.length);
s_char[i] = s_char[r];
s_char[r] = s_bak;
}
//该循环用于将打乱后的数组转会StringBuilder
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < s_char.length; i++) {
stringBuilder.append(s_char[i]);
}
//输出
System.out.println(stringBuilder);