当前位置: 代码迷 >> Java相关 >> java自学新手自编的程序,请教下这段程序有什么毛病?
  详细解决方案

java自学新手自编的程序,请教下这段程序有什么毛病?

热度:112   发布时间:2010-07-31 19:11:02.0
java自学新手自编的程序,请教下这段程序有什么毛病?
输入任意字符串, 用 逗号 把字符串分解成字符串数组,中间存在多个逗号
示例字符串:  fqkhq,t,2t,y,2y,2y,y,2y,2y2y2y2y,yu54,,   
我一直运行运行不了,但是我一直找不到毛病。。求教,我是才自学2个月的Java菜鸟,写的不好见笑了

package exp2;
import java.io.*;
public class Exp9 {
    static int i;
    static String s1;
    static String s2;
    static String s3;
    static String[] s5;   //定义变量S1 S2 S3 S4 S5
    public static void main(String args[]){
    BufferedReader red=new BufferedReader(new InputStreamReader(System.in)); //获得输入缓冲流对象red
    try{
        s1=red.readLine();    //用输入流的readLine()方法读取键盘输入的字符串
    }catch(IOException e){
        System.out.println("输入参数读取错误");
        
    }
   
        s1.trim();   //清楚S1字符串前后的所有空格
        while(s1.indexOf(',')==1)
            s1.substring(2);  //去掉s1字符串开头的','
        if(s1.endsWith(","))
            s1.substring(1,s1.length()-1); //去掉s1字符串最后的','
        while(s1.indexOf(',')>1);{
            s2=s1.substring(1,s1.indexOf(','));//获得s1字符串中第一个','的索引值,把','以及前面的字符串赋给S2数组
            s3.concat(s2);                    //把s2字符串赋给s3
            s1.substring(s1.indexOf(','));//  去掉s1字符串','前面的字符串,返回新的s1
            while(s1.indexOf(',')==1){
                s1=s1.substring(2);        //如果新的s1字符串前面有多个','  则全部去掉
            }      
        }  
        s3.concat(s1);                 //  这样最终获得的S3字符串中将无重复的','
        String[] s5=s3.split(",");     //用 String类的split方法把获得的s3字符串用','分开返回字符数组
        for(i=0;i<s5.length;i++){
            System.out.println(s5[i]);  //输出字符串数组
        }
        
    }
   
}


[ 本帖最后由 herhei3 于 2010-7-31 19:16 编辑 ]
搜索更多相关的解决方案: java  毛病  自学  

----------------解决方案--------------------------------------------------------
不用这么麻烦吧:
import java.util.Scanner;
public class Exp9 {
    static int i;
    static String s1;
    static String[] s5;   //定义变量S1 S2 S3 S4 S5
    public static void main(String args[]){
        Scanner ac=new Scanner(System.in); //获得输入缓冲流对象red
        s1=ac.next();
        String[] s5=s1.split(",");     //用 String类的split方法把获得的s1字符串用','分开返回字符数组
        for(i=0;i<s5.length;i++){
            System.out.println(s5[i]);  //输出字符串数组
        }   
    }
}
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2010-08-01 11:21:44
wtuaimmmm
该用户已被删除
  得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-08-01 11:26:09
huxiangwenhu

等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
  得分:6 
楼主用的虚拟机编译器可能是1.5以下的,从1.5以后才可以用Scanner标准输入类,所以考虑到楼主的实际情况再综合上面各位的信息,我试着写了一下:
import java.io.*;
public class Exp9
{
    static int i;
    static String s1;
    static String[] s5;   //定义变量S1 S2 S3 S4 S5
    public static void main(String args[])
    {
        BufferedReader ac=new BufferedReader(new InputStreamReader(System.in));  //获得输入缓冲流对象red
         try
         {
            s1=ac.readLine();    //用输入流的readLine()方法读取键盘输入的字符串
         }catch(IOException e)
         {
            System.out.println("输入参数读取错误");
         }
         String[] s5=s1.split(",");     //用 String类的split方法把获得的s1字符串用','分开返回字符数组
         for(i=0;i<s5.length;i++)
         {
            System.out.println(s5[i]);  //输出字符串数组
         }   
    }
}

不知道是不是楼主所想的
----------------解决方案--------------------------------------------------------
回复 5楼 huxiangwenhu
你咋知道楼主用1.5的啊?
----------------解决方案--------------------------------------------------------
回复 6楼 hsh_1987
1.5以上能用Scanner类(包括1.5),难道楼主会选择麻烦的标准输入类BufferedReader吗?
----------------解决方案--------------------------------------------------------
  相关解决方案