Java正则篇-26-编程练习-给定字符串数字排序后输出新字符串

这篇来写一个编程练习,题目是在给定的一个字符串中,里面全部是一些数字元素,需要通过代码实现,按照从小到大的数字输出成字符串。

 

1.题目

在给定的字符串“91 27 46 38 50”,编程实现输出“27 38 46 50 91”.

 

2.分析过程

1)将字符串转换成一个字符串数组

2)将字符串保存在一个等长度的int数组

3)排序

4)排序之后遍历并拼接输出成一个新字符串

 

3.代码实现

package regex;

import java.util.Arrays;

public class Test1_Split {

	public static void main(String[] args) {
		
		String source = "91 27 46 38 50";
		
		//1. 切割成字符串数组
		String[] arr1 = source.split(" ");
		//2. 保存在一个等长度的int数组
		int[] arr2 = new int[arr1.length];
		// 分别存储到arr2中
		for(int i = 0 ; i < arr1.length; i++) {
			arr2[i] = Integer.parseInt(arr1[i]);  //将数字字符串转换成int类型
		}
		
		// 3.对arr2排序
		Arrays.sort(arr2);
		
		// 4.遍历并输出
		StringBuilder sb = new StringBuilder();
		
		for(int i = 0 ; i < arr2.length; i++) {
			if(i == arr2.length -1) {
				sb = sb.append(arr2[i]);
			}else {
				sb = sb.append(arr2[i] + " ");
			}
		}
		
		// 5. 输出字符串
		System.out.println(sb);
	}

}

输出结果:27 38 46 50 91

 

       这里来思考下,在上面代码为什么要使用StringBuilder,为什么最后遍历里还需要一个if else判断。如果先定义一个空的String字符串,然后使用加号(+)进行拼接。这样会产生很多个垃圾,内存开销大。而使用StringBuilder就不会,前后只使用了一个对象,就进行了字符串拼接。使用i判断,主要是处理最后一个元素拼接后面产生的一个多余的空格。

这个编程题,考察了以下几个知识点:

1)正则中切割方法split()

2)Integer包装类里的字符串转换成int类型方法

3)排序,上面使用了Arrays这个工具类,你也可以写快速排序或者冒泡排序实现

4)StringBuilder和String的优点比较。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值