学Java第二十二天---------Stringjoiner类和字符串相关练习

一、Stringjoiner类

Stringjoiner类的构造方法

Stringjoiner类的成员方法

代码示例:

注意,一定要先导包:      import java.util.StringJoiner;

package com.itbaima.exe03;

import java.util.StringJoiner;

public class stringjoiner {
    public static void main(String[] args) {
        StringJoiner sj=new StringJoiner(",","[","]");

        sj.add("aaa").add("bbb").add("ccc");

        System.out.println(sj);

        System.out.println(sj.length());
    }
}

总结:

stringjoiner适用于有开始结束符号和间隔符的字符串

二、练习------转换罗马数字

题目:

代码一:

package com.itbaima.exe03;

import java.util.Scanner;
import java.util.zip.CheckedInputStream;

public class 转换罗马字符串 {
    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("你输入的字符串错误,请重新输入:");
            }
        }


        //之后将内容变成罗马数字
        //利用查表法进行转换

        StringBuilder sb=new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char c=str.charAt(i);
            int number=c-48;
            sb.append(luomachange(number));

        }

        System.out.println(sb);



    }
    public static String luomachange(int number){
        String []arr={"","I ","II ","III ","IV ","V ","VI ","VII ","VIII ","IX "};
        return arr[number];
    }


    public static boolean checkstr(String str){
        if(str.length()>9){
            return false;
        }

        for (int i = 0; i < str.length(); i++) {
            char c=str.charAt(i);
            if(c<'0'||c>'9'){
                return false;
            }
        }

        return true;
    }
}

luomachange()利用查表法,将数字索引与数组中的元素绑在一起

需要拼接字符串时,不要用加号,要用stringbuilder的append()

代码二:

利用switch来代替查表法

package com.itbaima.exe03;

import java.util.Scanner;

public class 转换罗马字符串02 {
    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("你输入的字符串错误,请重新输入:");
            }
        }


        //之后将内容变成罗马数字
        //利用查表法进行转换

        StringBuilder sb=new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char c=str.charAt(i);

            sb.append(luomachange(c));

        }

        System.out.println(sb);



    }
    public static String luomachange(char number){
        String str;
        switch(number){
            case '0'->str="";
            case '1'->str="I ";
            case '2'->str="II ";
            case '3'->str="III ";
            case '4'->str="IV ";
            case '5'->str="V ";
            case '6'->str="VI ";
            case '7'->str="VII ";
            case '8'->str="VIII";
            case '9'->str="IX ";
            default -> str="";
        }


        return str;
    }


    public static boolean checkstr(String str){
        if(str.length()>9){
            return false;
        }

        for (int i = 0; i < str.length(); i++) {
            char c=str.charAt(i);
            if(c<'0'||c>'9'){
                return false;
            }
        }

        return true;
    }
}

三、练习-------调整字符串的内容并比较

题目:

代码:

package com.itbaima.exe03;

public class rotate {
    public static void main(String[] args) {
        String strA="abcde";
        String strB="ABC";

        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 strA){
        char first=strA.charAt(0);
        String end=strA.substring(1);


        return end+first;
    }
}

所谓字符串一旦定义后不能改变,指的是字符串中的内容不能改变,但是可以重新赋值.,整体改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值