把字符串中的数字字符排序。
需求:"23 98 71 54 60"
结果:"23 54 60 71 98"
代码如下:
- package com.practice.classpractice;
- import java.util.Arrays;
- /*
- * 知识点:
- * 1)String[] String.split(String regex)
- * 根据给定正则表达式的匹配拆分此字符串。
- * 2)int Integer.parseInt(String s) throws NumberFormatException
- * 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
- * 3)StringBuffer StringBuffer.append(int i)
- * 将 int 参数的字符串表示形式追加到此序列。
- * 4)String StringBuffer.toString()
- * 返回此序列中数据的字符串表示形式。
- * 5)String String.trim()
- * 返回字符串的副本,忽略前导空白和尾部空白。
- */
- public class MyReverseIntString {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
-
- //建立一个数组
- String goalStr = "23 98 71 54 60";
-
- //方法一,使用split方法将该字符串切割成字符数组。
- //切分字符串,如果使用split()还是那个问题,是正则表达式
- String[] sTempArray = goalStr.split(" ");
-
- //方法二,通过使用substring来完成。
- /*
- * note1: indexOf的用法,如果没有找打指定字符串,则会返回-1
- * note1标识处可能会出现角标越界异常
- * note2:字符串在初始化的时候,默认为null
- * 故note2标识处会出现空指针异常。
- */
- /*
- int stringNum = getIntNums(goalStr," ");
-
- String[] sTempArray = new String[stringNum];
-
- for(int i = 0;i<stringNum-1;i++)
- {
- int index = goalStr.indexOf(" ");
- //note1最后一个字符串没有空格,故可能会返回-1,因此,上限值设置为stringNum-1
- sTempArray[i] = goalStr.substring(0, index);//note1标识处可能会出现角标越界异常
- goalStr = goalStr.substring(index+" ".length());
- }
-
- //note2:因为默认值是null,故无法调用concat()方法。
- //sTempArray[stringNum-1].concat(goalStr);
-
- sTempArray[stringNum-1]=goalStr;
- */
-
- //新建一个数组对象,其长度为切割之后的字符串数组的长度
- int[] iTempArray = new int[sTempArray.length];
-
- //将每个字符串转换成int类型。
- for (int i = 0; i < iTempArray.length; i++) {
- iTempArray[i]=Integer.parseInt(sTempArray[i]);
- }
-
- //数组排序
- Arrays.sort(iTempArray);
-
- //新建一个字符缓冲
- StringBuffer sb = new StringBuffer();
-
- //用空格填充数组间隔
- for (int j = 0; j < iTempArray.length; j++) {
- sb.append(iTempArray[j]).append(" ");
- }
-
- //将字符缓冲区中的数组,转换成字符串,并去掉前后两端的空格
- String sResult = sb.toString().trim();
-
- System.out.println(sResult);
- }
- private static int getIntNums(String goalStr, String string) {
- int index = goalStr.indexOf(string);
- int count = 0;
-
- while(index != -1)
- {
- goalStr = goalStr.substring(index+string.length());
- index = goalStr.indexOf(string);
- count++;
- }
- return count+1;
- }
- }
复制代码
关键易错的一些点,详见代码中的注释。 |
|