A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a80C51 中级黑马   /  2015-9-27 00:10  /  231 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

把字符串中的数字字符排序。
需求:"23 98 71 54 60"
结果:"23 54 60 71 98"
代码如下:
  1. package com.practice.classpractice;

  2. import java.util.Arrays;

  3. /*
  4. * 知识点:
  5. * 1)String[] String.split(String regex)
  6. * 根据给定正则表达式的匹配拆分此字符串。
  7. * 2)int Integer.parseInt(String s) throws NumberFormatException
  8. * 使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
  9. * 3)StringBuffer StringBuffer.append(int i)
  10. *  将 int 参数的字符串表示形式追加到此序列。
  11. * 4)String StringBuffer.toString()
  12. * 返回此序列中数据的字符串表示形式。
  13. * 5)String String.trim()
  14. * 返回字符串的副本,忽略前导空白和尾部空白。
  15. */

  16. public class MyReverseIntString {

  17.         public static void main(String[] args) {
  18.                 // TODO Auto-generated method stub
  19.                
  20.                 //建立一个数组
  21.                 String goalStr = "23 98 71 54 60";
  22.                
  23.                 //方法一,使用split方法将该字符串切割成字符数组。
  24.                 //切分字符串,如果使用split()还是那个问题,是正则表达式
  25.                 String[] sTempArray = goalStr.split(" ");
  26.                
  27.                 //方法二,通过使用substring来完成。
  28.                 /*
  29.                  * note1: indexOf的用法,如果没有找打指定字符串,则会返回-1
  30.                  *                 note1标识处可能会出现角标越界异常
  31.                  * note2:字符串在初始化的时候,默认为null
  32.                  *                 故note2标识处会出现空指针异常。
  33.                  */
  34.                 /*       
  35.                 int stringNum = getIntNums(goalStr," ");
  36.                
  37.                 String[] sTempArray = new String[stringNum];
  38.                
  39.                 for(int i = 0;i<stringNum-1;i++)
  40.                 {
  41.                         int index = goalStr.indexOf(" ");
  42.                         //note1最后一个字符串没有空格,故可能会返回-1,因此,上限值设置为stringNum-1
  43.                         sTempArray[i] = goalStr.substring(0, index);//note1标识处可能会出现角标越界异常
  44.                         goalStr = goalStr.substring(index+" ".length());
  45.                 }
  46.                
  47.                 //note2:因为默认值是null,故无法调用concat()方法。
  48.                 //sTempArray[stringNum-1].concat(goalStr);
  49.                
  50.                 sTempArray[stringNum-1]=goalStr;
  51.                 */
  52.                
  53.                 //新建一个数组对象,其长度为切割之后的字符串数组的长度
  54.                 int[] iTempArray = new int[sTempArray.length];
  55.                
  56.                 //将每个字符串转换成int类型。
  57.                 for (int i = 0; i < iTempArray.length; i++) {
  58.                         iTempArray[i]=Integer.parseInt(sTempArray[i]);
  59.                 }
  60.                
  61.                 //数组排序
  62.                 Arrays.sort(iTempArray);
  63.                
  64.                 //新建一个字符缓冲
  65.                 StringBuffer sb = new StringBuffer();
  66.                
  67.                 //用空格填充数组间隔
  68.                 for (int j = 0; j < iTempArray.length; j++) {
  69.                         sb.append(iTempArray[j]).append(" ");       
  70.                 }
  71.                
  72.                 //将字符缓冲区中的数组,转换成字符串,并去掉前后两端的空格
  73.                 String sResult = sb.toString().trim();
  74.                
  75.                 System.out.println(sResult);
  76.         }

  77.         private static int getIntNums(String goalStr, String string) {
  78.                 int index = goalStr.indexOf(string);
  79.                 int count = 0;
  80.                
  81.                 while(index != -1)
  82.                 {
  83.                         goalStr = goalStr.substring(index+string.length());
  84.                         index = goalStr.indexOf(string);
  85.                         count++;
  86.                 }
  87.                 return count+1;
  88.         }

  89. }
复制代码

关键易错的一些点,详见代码中的注释。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马