String类的应用

一、具体如何做

Java通过找代码或者使用AI来实现相关项目。

要求:1.能看懂。

二、jdk常用类库

       1.有关String类的相关应用(这里跳过了一些常用方法的展示,这些可以在网络中查找)

       2.练习:

练习1:

字符串处理练习

数据如下:

String data = "风无痕-1 班-75, 云逸尘-2 班-85, 龙傲天-1 班-68, 花弄影-2 班-70, 叶孤城-1 班-88, 西门吹雪-2 班-55, 东方瑾-1 班-92, 慕容雪-2 班-66, 上官云-1 班-77, 南宫月-2 班-80, 北堂风-1 班-58, 楚天河-2 班-73, 萧逸飞-1 班-82, 林诗音-2 班-60, 李逍遥-1 班-70, 赵灵儿-2 班-95, 景天-1 班-65, 唐雪见-2 班-87, 徐长卿-1 班-78, 紫萱-2 班-50, 飞蓬-1 班-83, 重楼-2 班-62, 龙葵-1 班-72, 雪见-2 班-90, 云天河-1 班-67, 韩菱纱-2 班-81, 柳梦璃-1 班-76, 慕容紫英-2 班-57, 姜云凡-1 班-86, 唐雨柔-2 班-68, 龙幽-1 班-79, 小蛮-2 班-52, 夏侯瑾轩-1 班-91, 瑕-2 班-74, 暮菖兰-1 班-84, 谢沧行-2 班-61, 皇甫卓-1 班-71, 凌波-2 班-89, 铁笔-1 班-59, 玉书-2 班-69, 青石-1 班-85, 血手-2 班-56, 毒影-1 班-73, 姜承-2 班-93, 厉岩-1 班-64, 结萝-2 班-88, 欧阳慧-1 班-51, 方兰生-2 班-77, 尹千觞-1 班-80, 风晴雪-2 班-63, 百里屠苏-1 班-94, 巽芳-2 班-58, 陵越-1 班-75, 芙蕖-2 班-82, 紫胤真人-1 班-66, 红玉-2 班-96, 尹志平-1 班-53, 郭芙-2 班-79, 杨过-1 班-87, 小龙女-2 班-67";

目标如下:

读取数据,进行程序处理,在控制台输出以下内容:

1. 分别输出1班、2班的总人数

2. 分别输出1班、2班的平均分

3. 输出最高分与最低分

4. 按照成绩单进行排序

5. 计算1班、2班的及格率

===========================================================

代码实现:

1. 分别输出1班、2班的总人数

String[] students = data.split(", ");

//通过长字符串用逗号分开,使其变成一个一个小字符串

//每个子字符串代表一个学生的信息。

//这些子字符串会被存储在 students 数组中,方便后续对每个学生的信息进行处理。

int class1Count = 0;    //1班总人数

int class2Count = 0;    //2班总人数



for (String student : students) {

    String[] parts = student.split("-");

    String className = parts[1].trim();

    if (className.equals("1 ")) {

        class1Count++;

    } else if (className.equals("2 ")) {

        class2Count++;

    }

}



System.out.println("1班总人数: " + class1Count);

System.out.println("2班总人数: " + class2Count);
=================================================================
2. 分别输出1班、2班的平均分
double class1Average = 0.0;    //1班平均分

double class2Average = 0.0;    //2班平均分

int class1TotalScore = 0;    //1班总分数

int class2TotalScore = 0;    //2班总分数





for (String student : students) {

    String[] parts = student.split("-");

    String className = parts[1].trim();

    int score = Integer.parseInt(parts[2].trim());

    if (className.equals("1 ")) {

        class1TotalScore += score;

    } else if (className.equals("2 ")) {

        class2TotalScore += score;

    }

}



class1Average = (double) class1TotalScore / class1Count;

class2Average = (double) class2TotalScore / class2Count;



System.out.println("1班平均分: " + class1Average);

===========================================================

3. 输出最高分与最低分

int highestScore = Integer.MIN_VALUE;    //最高分

int lowestScore = Integer.MAX_VALUE;    //最低分



for (String student : students) {

    String[] parts = student.split("-");

    int score = Integer.parseInt(parts[2].trim());

    if (score > highestScore) {

        highestScore = score;

    }

    if (score < lowestScore) {

        lowestScore = score;

    }

}



System.out.println("最高分: " + highestScore);

System.out.println("最低分: " + lowestScore);

===========================================================

4. 按照成绩单进行排序

Arrays.sort(students, new Comparator<String>() {

    @Override

    public int compare(String s1, String s2) {

        String[] parts1 = s1.split("-");

        String[] parts2 = s2.split("-");

        int score1 = Integer.parseInt(parts1[2].trim());

        int score2 = Integer.parseInt(parts2[2].trim());

        return score2 - score1;

    }

});



System.out.println("按照成绩单进行排序:");

for (String student : students) {

    System.out.println(student);

}

===========================================================

5. 计算1班、2班的及格率

int class1PassCount = 0;    //1班及格人数

int class2PassCount = 0;    //2班及格人数



for (String student : students) {

    String[] parts = student.split("-");

    String className = parts[1].trim();

    int score = Integer.parseInt(parts[2].trim());

    if (className.equals("1 ") && score >= 60) {

        class1PassCount++;

    } else if (className.equals("2 ") && score >= 60) {

        class2PassCount++;

    }

}



double class1PassRate = (double) class1PassCount / class1Count;

double class2PassRate = (double) class2PassCount / class2Count;



System.out.println("1班及格率: " + class1PassRate);

System.out.println("2班及格率: " + class2PassRate);

===========================================================

字符串处理练习2:

以下是购物清单包括了 商品与数量

String str = "苹果:5,香蕉:8,橙子:3,草莓:12,西瓜:7,葡萄:9,芒果:6,菠萝:4,梨:10,桃子:11,胡萝卜:15,白菜:8,西红柿:10,土豆:13,茄子:6,青椒:9,玩具车:20,玩具熊:18,积木:12,拼图:16,玩偶:14,风筝:11,气球:9"

1. 找到最贵的商品

2. 计算总共买了多少样物品

3. 判断是否买了荔枝,如果买了输出购买数量

4. 判断是否买了积木,如果买了输出购买数量

===========================================================

代码实现:

1. 找到最贵的商品

String[] items = str.split(",");

String mostExpensiveItem = "";

int maxPrice = 0;



for (String item : items) {

    String[] parts = item.split(":");

    String itemName = parts[0];

    int price = Integer.parseInt(parts[1]);



    if (price > maxPrice) {

        maxPrice = price;

        mostExpensiveItem = itemName;

    }

}



System.out.println("最贵的物品是: " + mostExpensiveItem + " 价格是: " + maxPrice);

===========================================================

2. 计算总共买了多少样物品

int totalItems = str.split(",").length;

System.out.println("商品总数: " + totalItems);

===========================================================

3. 判断是否买了荔枝,如果买了输出购买数量

if(str.contains("荔枝")) {

    int count = str.split("荔枝").length - 1;

    System.out.println("You bought " + count + " lilies");

}else {

    System.out.println("你没有买荔枝");

}

===========================================================

有关问题及一些代码含义:

1.为什么要分割两次?

在代码中,String[] parts = student.split("-"); 这句代码的作用是将每个学生的信息字符串 student 按照短横线 "-" 进行分割,以便进一步提取和处理每个学生的具体信息。

具体来说,每个学生的信息字符串 student 的格式是:

学生姓名-班级-分数

例如:

风无痕-1 班-75

通过 split("-") 方法,可以将这个字符串分割成多个部分,存储在 parts 数组中。分割后的 parts 数组的内容将是:

["风无痕", "1 班", "75"]

这样,我们可以方便地提取出学生的姓名、班级和分数,并进行相应的处理。例如,通过 parts[1] 可以获取学生的班级信息,然后根据班级信息统计1班和2班的总人数。

2.

这句代码是将parts数组中提取第二个元素,并去除该元素前后空格,将结果存储到className中。

3.

这句代码的意思是将 parts 数组中的第三个元素(即索引为2的元素)转换为整数,并去除该元素前后的空格,然后将结果存储在 score 变量中。

Integer.parseInt() 方法用于将字符串转换为整数。在这个例子中,parts[2] 的值是 "75",通过调用 Integer.parseInt() 方法,可以将其转换为整数 75

4.

具体来说,Arrays.sort() 方法是 Java 提供的用于对数组进行排序的方法。它有两个参数:

  1. 要排序的数组,这里是 students 数组。
  2. 一个比较器对象,用于定义排序的规则。

在这个例子中,比较器是一个匿名内部类,实现了 Comparator<String> 接口。这个比较器重写了 compare() 方法,该方法接受两个字符串参数 s1  s2,分别代表 students 数组中的两个元素。

compare() 方法返回 score2 - score1,这个表达式的结果决定了 s1  s2 的排序顺序。如果 score2 大于 score1,则 score2 - score1 为正数,表示 s2 应该排在 s1 之前;如果 score2 小于 score1,则 score2 - score1 为负数,表示 s2 应该排在 s1 之后;如果 score2 等于 score1,则 score2 - score1 为零,表示 s2  s1 的顺序无关紧要

其实,这么看来String类中比较重要的就是分割split()方法,和trim()方法,别的方法甚至都没有用到。

  • 22
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值