Java习题篇---字符串较难练习

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");

    }
}

回到目录


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值