JAVA学习第八章——字符串扩展

StringJoiner

StringJoiner,可以看成一个容器,创建之后里面的内容是可变的

        StringJoiner sj = new StringJoiner("---");

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

        System.out.println(sj);
        StringJoiner sj = new StringJoiner(",","[","]");

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

        System.out.println(sj);
        StringJoiner sj = new StringJoiner(",","[","]");

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

        int len = sj.length();
        System.out.println(len);

        System.out.println(sj);

        String str = sj.toString();
        System.out.println(str);
public StringJoiner(间隔符号)  创建一个StringJoiner对象,指定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号)  创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号
public StringJoiner add(添加内容)  添加数据,并返回对象本身
public int length()  返回长度(字符出现的个数)
public String toString()  返回一个字符串(该字符串就是拼接之后的结果)

转换罗马数字

键盘录入一个字符串
要求1:长度为小于等于9
要求2:只能是数字
将内容变成罗马数字

package one;

import com.sun.source.tree.ContinueTree;

import java.util.Scanner;

public class first {
    public static void main(String[] args) {
        String str;
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入字符");

            str = sc.next();

            boolean flag = checkStr(str);

            if(flag){
                break;
            }else {
                System.out.println("字符串不符合规则,请重新输入");
                continue;
            }
        }

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            int number = c - 48;
            String s = changeL(number);
            sb.append(s);
        }

        System.out.println(sb);



    }

    public static String changeL(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;

    }
}

调整字符串

给定两个字符串,A和B。
A的旋转操作就是将A最左边的字符移动到最右边
例如,若A=‘abcde’,在移动一次之后结果就是‘bcdea’,如果在若干次调整操作之后,A能变成B,那么返回True,如果不能匹配成功,则返回false

package one;

import com.sun.source.tree.ContinueTree;

import java.util.Scanner;

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

        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 str) {
        String s1 = str.substring(0, 1);
        String s2 = str.substring(1);
        String s3 = s2 + s1;
        return s3;
    }
}

打乱字符串

键盘输入任意字符串,打乱里面的内容

package one;


import java.util.Random;
import java.util.Scanner;

public class first {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串");
        
        String str = sc.next();

        char[] arr = str.toCharArray();
        char[] chr = new char[1];

        Random random = new Random();



        for (int j = 0; j < str.length(); j++) {
            int i = random.nextInt(str.length() - 1);
            chr[0] = arr[i];
            arr[i] = arr[j];
            arr[j] = chr[0];
        }

        String result = new String(arr);

        System.out.println(result);

    }
}

生成验证码

可以是小写字母,也可以是大写字母,还可以是数字
规则:
长度为5
内容中是四位字母,1位数字
其中数字只有1位,但是可以出现在任意的位置

package one;

import java.util.Random;

public class first {
    public static void main(String[] args) {
        char[] arr = new char[52];
        char c = 65;
        char b = 97;
        for (int i = 0; i < 26; i++) {
            arr[i] = c ;
            arr[i + 26] = b;
            c++;
            b++;
        }

        char[] pdd = new char[5];

        Random rd = new Random();
        for (int i = 0; i < 4; i++) {
            int j = rd.nextInt(arr.length - 1);
            char d = arr[j];
            pdd[i] = arr[j];
        }


        char k = (char) rd.nextInt(48,57);
        pdd[4] = k;

        char[] cdd = new char[1];

        int w = rd.nextInt(4);
        cdd[0] = pdd[w];
        pdd[w] = pdd[4];
        pdd[4] = cdd[0];

        System.out.println(pdd);
    }
}

字符串练习

给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示位字符串形式

package one;

public class first {
    public static void main(String[] args) {
        String num1 = "123456";
        String num2 = "1234";
        int num = 0;
        int number = 0;
        int s1 = num1.length();
        int s2 = num2.length();

        for (int i = 0; i < num1.length(); i++) {
            int k = num1.charAt(i) - '0';
            num = (int) (num + Math.pow(10, s1 - i - 1) * k);
        }
        System.out.println(num);

        for (int i = 0; i < num2.length(); i++) {
            int j = num2.charAt(i) - '0';
            number = (int) (number + Math.pow(10,s2 - i - 1)*j);
        }
        System.out.println(number);

        int sum = num * number;
        String sum1 = sum + "";
        System.out.println(sum1);

    }
}

字符串练习

给你一个字符串s,由若干单词组成,单词前后用一些空格字符隔开,返回字符串中最后一个单词的长度

package one;

public class first {
    public static void main(String[] args) {
        String s = "fly me to the moon";
        int j = 0;
        for (int i = s.length(); i > 0; i--) {
            if(i == s.length()){
                String s1 = s.substring(i);
                System.out.println(s1);
            }else {
                String s1 = s.substring(i,i+1);
                if(s1.equals(" ")){
                    break;
                }
                j++;
            }
        }
        System.out.println(j);
    }
}

Tips

以上学习内容均来自于B站黑马程序员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值