黑马程序员技术交流社区

标题: 字符串排序? [打印本页]

作者: 騛鹏    时间: 2013-3-25 15:31
标题: 字符串排序?
本帖最后由 騛鹏 于 2013-3-25 19:04 编辑
  1. /*
  2. day13 homework

  3. "12 0 99 -7 30 4 100 13"
  4. 要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。

  5. "-7 0 4 12 13 30 99 100"
  6. */
  7. import java.util.*;

  8. class StringSelectDemo2
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 String s = "12 0 99 -7 30 4 100 13";

  13.                 //利用空格“ ”分割,获取字符串数组
  14.                 String[] str=s.split(" ");

  15.                 //定义一int型数组
  16.                 int[] ins = new int[str.lenhth];

  17.                 //将字符串数组中的元素转化为int型后存入int型数组中
  18.                 for (int x=0; x<str.length; x++)
  19.                 {
  20.                       Arrays.fill(ins,Integer.parseInt(str[x]));
  21.                 }

  22.                 //把int型数组中的元素排序
  23.                 Arrays.sort(ins);

  24.                 //打印ins中排序后的元素
  25.                 for (int y=0; y<ins.length; y++)
  26.                 {
  27.                         sop(ins[y]);
  28.                 }
  29.         }
  30.         public static void sop(Object obj)
  31.         {
  32.                 System.out.print(obj+" ");
  33.         }
  34. }
复制代码


把上面错误的理解为:将一组数据存入int型数组中 ,而实际是 将val 填充到整个数组中,也就是整个数组中全部为val值。 那么,这样的方法什么时候会用到呢?

还有上面的程序 能否将str 转换到int型数组中呢,之所以这样就是想使用 Arrays.sort()方法,便于排序。如若不能,该如何解决?谢谢
作者: 仉钰    时间: 2013-3-25 15:58
本帖最后由 仉钰 于 2013-3-25 15:59 编辑

你上面的代码  目的就是想  把 String s = "12 0 99 -7 30 4 100 13";  的数字转换成int数组  不过是用的方法不对
Arrays.fill 不适用此处  不过肯定有用到它的地方

小问题  改成如下就可以了
for (int x = 0; x < str.length; x++) {
    //Arrays.fill(ins,Integer.parseInt(str[x]));   此处不适用
     ins[x] = Integer.valueOf(str[x]);
}

作者: 陈圳    时间: 2013-3-25 16:03
本帖最后由 陈圳 于 2013-3-25 16:06 编辑
  1. public static void main(String[] args) {
  2.                 // TODO Auto-generated method stub
  3.                 String s = "12 0 99 -7 30 4 100 13";
  4.                 System.out.println(getSortString(s));
  5.         }
  6.         public static String getSortString(String s){
  7.                 String[] str=(s.split(" "));
  8.                 Integer[] ins=new Integer[str.length];
  9.                 for(int i=0;i<ins.length;i++){
  10.                         ins[i]=Integer.parseInt(str[i]);
  11.                 }
  12. <span class="Apple-tab-span" style="white-space:pre">        </span>        //!Arrays.fill(ins, 1);//相当于把一个数组中的元素全部替换成var值.打印结果:[1, 1, 1, 1, 1, 1, 1, 1]
  13.                 Arrays.sort(ins);
  14.                 return (Arrays.toString(ins)).toString();
复制代码

作者: 騛鹏    时间: 2013-3-25 16:34
仉钰 发表于 2013-3-25 15:58
你上面的代码  目的就是想  把 String s = "12 0 99 -7 30 4 100 13";  的数字转换成int数组  不过是用的方 ...

Integer.valueOf(str[x])返回的是 Integer对象 理应存于Integer[ ] 数组中,而存于int[ ] 中亦能得其结果。
这两个数组 有区别吗? 谢谢
作者: 仉钰    时间: 2013-3-25 16:42
本帖最后由 仉钰 于 2013-3-25 16:47 编辑
騛鹏 发表于 2013-3-25 16:34
Integer.valueOf(str[x])返回的是 Integer对象 理应存于Integer[ ] 数组中,而存于int[ ] 中亦能得其结果 ...


是的 Integer.valueOf() 返回Integer 对象  jdk5.0 以上 支持原生类型 和 其包装类的 自动转换
或者可以用以下 2个方法 来直接得到 int 值
1 Integer.valueOf(str[x]).intValue()  来明确得到一个 int 值
2 Integer.parseInt(str[x])

valueOf内部也是调用 parseInt() 来完成的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2