黑马程序员技术交流社区

标题: 关于字符串打印不出空格及排序问题 [打印本页]

作者: 恨天~无过…    时间: 2014-4-23 19:45
标题: 关于字符串打印不出空格及排序问题
本帖最后由 恨天~无过… 于 2014-4-24 10:12 编辑
  1. package packexam;

  2. import java.util.Arrays;

  3. public class StringBufferDemo1 {

  4.         public static void main(String[] args) {
  5.                 // TODO 自动生成的方法存根
  6.                 String s="  s b c u o   p   i";  //给定这样一个字符串,让他按顺序出来
  7.                 //首选 把字符串两边往中间
  8.                 //再把字符串转成字符数组,再提取出一个中间不含空格的新字符数组
  9.                 //进行字符数组的排序
  10.                 //打印出结果
  11.                 String str=s.trim();
  12.                 String sum_str=toStringArray(str);
  13.                 System.out.println(sum_str);
  14.         }

  15.         public static String toStringArray(String str) {
  16.                 // TODO 自动生成的方法存根
  17.                 //先把这个字符转成字符数组
  18.                 int count=0;
  19.                 char[] arr=str.toCharArray();
  20.                 char[] sum_arr=null;
  21.                 //再将字符数组的中不是空格的给另外存一个字符数组
  22.                 for (int i = 0; i < arr.length; i++) {
  23.                         if(arr[i]!=' '){
  24.                                 sum_arr[count]=arr[i];
  25.                                 count++;
  26.                         }
  27.                 }
  28.                 Arrays.sort(sum_arr);
  29.                 String s=addStringArray(sum_arr);
  30.                 return s;
  31.         }

  32.         public static String addStringArray(char[] sum_arr) {
  33.                 // TODO 自动生成的方法存根
  34.                 StringBuilder sb=new StringBuilder();
  35.                 for (int i = 0; i < sum_arr.length; i++) {
  36.                         if(i!=sum_arr.length-1){
  37.                                 sb.append(sum_arr[i]);
  38.                
  39.                         }
  40.                 }
  41.                 return sb.toString();
  42.         }

  43. }
复制代码
求指教哪里出了问题!!!
作者: 美不美看腿    时间: 2014-4-23 19:56
还没学到哎 嘿嘿
作者: luoyilan222    时间: 2014-4-23 20:24
    char[] sum_arr=null;   这个没有初始化
作者: NNERO    时间: 2014-4-23 20:40
  1. char[] sum_arr=null;
复制代码

首先需要明白,数组也是一个对象,这句话的意思就是sum_arr这个引用 指向了一个null ,也就是空指针。
数组长度是固定的,这样做就意味着这个数组没有长度,那么给它赋值就是错误的。
修改:
char[] sum_arr = new char[arr.length]即可,或者直接用StringBuilder代替数组方便的多。。。
作者: 四川男人    时间: 2014-4-23 21:11


        public static String toStringArray(String str) {
                // TODO 自动生成的方法存根
                //先把这个字符转成字符数组
                int count=0;
                char[] arr=str.toCharArray();
                char[] sum_arr=null;
                                                //这里字符数组没有得到初始化,只是声明了一下,后面要用首先要new字符数组,才能用
                for (int i = 0; i < arr.length; i++) {
                        if(arr[i]!=' '){
                                sum_arr[count]=arr[i];
                                count++;
                        }
                }
                Arrays.sort(sum_arr);
                String s=addStringArray(sum_arr);
                return s;
        }


作者: 恨天~无过…    时间: 2014-4-24 10:04
本帖最后由 恨天~无过… 于 2014-4-24 10:05 编辑
  1. import java.util.Arrays;

  2. public class String_Test {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 String s=" z b e d y f   i g      ";
  8.                 //目标把这些字符之间把有的空格去掉且包括两边;
  9.                 //再按顺序打印
  10.                 String arr=sortArray(s);
  11.                 System.out.println("--"+arr+"--");
  12.         }
  13.         public static String sortArray(String s) {
  14.                 // TODO Auto-generated method stub
  15.                 //要想把空格去掉 则要先把字符串变成字符数组,再来判断不为null则存起来,为空而不存
  16.                 //再把这个字符数组转成字符串数组
  17.                 //排序字符串数组
  18.                 //再依次打印输出
  19.                 char arr_1[]=s.toCharArray();  //把字符串转成字符数组;
  20.                 //定义一个方法把字符数组转成字符串
  21.                 String str_s=charToString(arr_1);
  22.                 char arr[]=str_s.toCharArray();//再次把字符串转成字符数组
  23.                 Arrays.sort(arr);   //将此字符数组进行排序;
  24.                 String str_num=charToString(arr);
  25.                 return str_num;
  26.         }
  27.         public static String charToString(char[] arr) {
  28.                 // TODO Auto-generated method stub
  29.                 StringBuilder sb=new StringBuilder(); //创建一个StringBuilder对象
  30.                 //再历遍抚循环取出不含空格的字符
  31.                 for (int i = 0; i < arr.length; i++) {
  32.                         if(arr[i]!=' '){
  33.                                 sb.append(arr[i]);
  34.                         }
  35.                 }
  36.                 return sb.toString();
  37.         }

  38. }
复制代码
根据 哥们的议建有效果!!完成了!!




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