Java-黑马Java学习作业-day10字符串

学习视频链接:https://www.bilibili.com/video/BV17F411T7Ao

文章目录

    • 题目1-课堂练习
    • 题目2-输入字符串打乱内容
    • 题目3-随机生成验证码
    • 题目4-统计字符串中英文字母和数字个数
    • 题目5-对称字符串
    • 题目6-校验身份证号码
    • 题目7- 数组返回字符串
    • 题目8(扩展)-获取字串出现次数


题目1-课堂练习

​ 完成课堂上所有练习哦
练习:http://t.csdn.cn/UVyqE

题目2-输入字符串打乱内容

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

package cn.kox.homework;

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

/**
 * @ClassName: codeHomework02
 * @Author: Kox
 * @Data: 2023/1/22
 * @Sketch: 题目2
 */
public class codeHomework02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个字符串:");
        String str = sc.next();

        char[] arr = str.toCharArray();

        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int index = r.nextInt(arr.length);
            char temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }

        String newStr = new String(arr);

        System.out.println(newStr);
    }
}

题目3-随机生成验证码

生成验证码

内容:可以是小写字母,也可以是大写字母,还可以是数字

规则:

长度为5

内容中是四位字母,1位数字。

其中数字只有1位,但是可以出现在任意的位置。
package cn.kox.homework;

import java.util.Random;

/**
 * @ClassName: codeHomework03
 * @Author: Kox
 * @Data: 2023/1/22
 * @Sketch: 题目3
 */
public class codeHomework03 {
    public static void main(String[] args) {
        char[] chs = new char[52];
        for (int i = 0; i < chs.length; i++) {
            if (i <= 25) {
                chs[i] = (char)(97+i);
            } else {
                chs[i] = (char)(65 + i - 26);
            }
        }
        StringBuffer sb = new StringBuffer();
        Random r = new Random();
        for (int i = 0; i < 5; i++) {
            if (i == 4) {
                int num = r.nextInt(10);
                sb.append(num);
                break;
            }
            int index = r.nextInt(chs.length);
            sb.append(chs[index]);
        }

        char[] arr = sb.toString().toCharArray();
        for (int i = 0; i < arr.length; i++) {
            int index = r.nextInt(sb.length());
            char temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }
        String result = new String(arr);

        System.out.println(result);


    }
}

题目4-统计字符串中英文字母和数字个数

请编写程序,由键盘录入一个字符串,统计字符串中英文字母和数字分别有多少个。比如:Hello12345World中字母:10个,数字:5个。

package cn.kox.homework;

import java.util.Scanner;

/**
 * @ClassName: codeHomework04
 * @Author: Kox
 * @Data: 2023/1/22
 * @Sketch: 题目4
 */
public class codeHomework04 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str=  sc.nextLine();
        int strCount = 0;
        int numCount = 0;
        char[] arr = str.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= 'A' && arr[i] <= 'Z') {
                strCount++;
            }
            if (arr[i] >= 'a' && arr[i] <= 'z') {
                strCount++;
            }
            if (arr[i] >= '0' && arr[i] <= '9') {
                numCount++;
            }
        }
        System.out.printf("strCount: %s, numCount: %s", strCount, numCount);
    }
}

题目5-对称字符串

请定义一个方法用于判断一个字符串是否是对称的字符串,并在主方法中测试方法。例如:“abcba”、"上海自来水来自海上"均为对称字符串。

package cn.kox.homework;

import java.util.Scanner;

/**
 * @ClassName: codeHomework05
 * @Author: Kox
 * @Data: 2023/1/22
 * @Sketch: 题目5
 */
public class codeHomework05 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        StringBuilder sb = new StringBuilder(str);
        System.out.println(str.equals(sb.reverse().toString()));
    }
}

题目6-校验身份证号码

我国的居民身份证号码,由由十七位数字本体码和一位数字校验码组成。请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果。规则为:号码为18位,不能以数字0开头,前17位只可以是数字,最后一位可以是数字或者大写字母X。

package cn.kox.homework;

import java.util.Scanner;

/**
 * @ClassName: codeHomework06
 * @Author: Kox
 * @Data: 2023/1/22
 * @Sketch: 题目6
 */
public class codeHomework06 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String id = sc.next();
        System.out.println(verifyId(id));
    }

    public static boolean verifyId(String id) {
        if (id == null) {
            return false;
        }

        if (id.startsWith("0")) {
            return false;
        }

        for (int i = 0; i < id.length(); i++) {
            char c = id.charAt(i);
            if (i == id.length() - 1) {
                if (c < '0' || c > '9' && c != 'X') {
                    return false;
                }
            } else {
                if (c < '0' || c > '9') {
                    return false;
                }
            }
        }
        return true;
    }
}

题目7- 数组返回字符串

定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。

要求:

​ 1、如果传递的参数为空,返回null

​ 2、如果传递的数组元素个数为0,返回[]

​ 3、如果数组为int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]

package cn.kox.homework;

import java.util.StringJoiner;

/**
 * @ClassName: codeHomework07
 * @Author: Kox
 * @Data: 2023/1/22
 * @Sketch: 题目7
 */
public class codeHomework07 {
    public static void main(String[] args) {
        int[] arr = {1, 2 ,3 ,4 ,5};
        System.out.println(getString(arr));
    }

    public static String getString(int[] arr) {
        if (arr == null) {
            return null;
        }
        if (arr.length == 0) {
            return "[]";
        }
        StringJoiner sj = new StringJoiner(",", "[", "]");
        for (int i = 0; i < arr.length; i++) {
            sj.add(arr[i] + "");
        }
        return sj.toString();
    }
}

题目8(扩展)-获取字串出现次数

在String类的API中,有如下两个方法:

// 查找参数字符串str在调用方法的字符串中第一次出现的索引,如果不存在,返回-1
public int indexOf(String str)

// 截取字符串,从索引beginIndex(包含)开始到字符串的结尾
public String substring(int beginIndex)

请仔细阅读API中这两个方法的解释,完成如下需求。

现有如下文本:“Java语言是面向对象的,Java语言是健壮的,Java语言是安全的,Java是高性能的,Java语言是跨平台的”。请编写程序,统计该文本中"Java"一词出现的次数。

  • 解法一
package cn.kox.homework;

/**
 * @ClassName: codeHomework08
 * @Author: Kox
 * @Data: 2023/1/22
 * @Sketch: 题目8
 */
public class codeHomework08 {
    public static void main(String[] args) {
        String str = "Java语言是面向对象的,Java语言是健壮的,Java语言是安全的,Java是高性能的,Java语言是跨平台的";
        String tar = "Java";
        System.out.println(search(str, tar));
    }

    public static int search(String str, String tar) {
        String newStr = str.replace(tar, "");
        int count = (str.length() - newStr.length()) / tar.length();
        return count;
    }
}

  • 解法二
public class Test {
    public static void main(String[] args) {
        String str = "Java语言是面向对象的,Java语言是健壮的,Java语言是安全的,Java是高性能的,Java语言是跨平台的";
        String tar = "Java";
        // 调用方法并输出
        System.out.println(search(str, tar));

    }
    // 返回值int表示次数,参数列表str表示在哪个字符串中查找,tar表示要查找的目标子串
    public static int search(String str, String tar) {
        // 定义统计变量表示次数
        int count = 0;
        // 定义索引变量,表示每次找到子串出现的索引
        int index = -1;
        // 定义循环,判断条件为在字符串中找到了目标子串
        while ((index = str.indexOf(tar)) != -1) { // 将找到的索引赋值给变量并判断
            // 次数累加
            count++;
            // 把查找过的部分剪切掉,从找到的索引+子串长度的位置开始截取。
            str = str.substring(index + tar.length());
        }
        return count;
    }
}

你可能感兴趣的:(Java,SE,java,学习,开发语言)