在用java处理简单的字符串时有误,求教

kstd132 2016-01-29 04:04:04
代码的主要功能功能是通过JAVA的IndexOf()和SubString()截取字符串,主要是第一步去除字符串中的空白(包括换行和空格)然后第二步在截取输出,但是第二部出现了问题(我在第一二步分别捕获异常,第二步抛出了异常)。求教求指导(小白新手).

package com.ljx;
import java.io.*;
import java.util.*;
import java.util.regex.Pattern;
import java.lang.*;


public class Info {

private static final String String = null;
public String replaceBlank(String str) {try{
String a1= "";

if (str!=null) {

Pattern p = Pattern.compile("\\s*|\t|\r|\n");

java.util.regex.Matcher m = p.matcher(str);

a1= m.replaceAll("");
}

return a1;}
catch(Exception e){System.out.println("清除空白时发生错误");
return ("123:1231111:132345");}

}
//private static final String String = null;
public void shuru(){
try{

System.out.println("输入数据点击回车");
Scanner in =new Scanner (System.in);
String str=in.next();}
catch(Exception e){System.out.println("输入数据时发生错误");}
}
public String chuli(String str){

try {
int a=str.indexOf(":");
int b=str.indexOf(":",str.indexOf(":")+1);

System.out.println(str.substring(a+1,b-4));
System.out.println(str.substring(b+1,b+3));
return str;}
catch(Exception e){
System.out.println("处理字符串时发生错误");
return str;
}
}
public static void main(String[] args) {
Info info=new Info();
info.shuru();
info.replaceBlank(String);
info.chuli(String);
}
}
...全文
3923 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝莓之恋9527 2019-11-06
  • 打赏
  • 举报
回复
我是来看评论的,你们真搞笑
nikkolee 2019-05-01
  • 打赏
  • 举报
回复
帮你顶起,希望大神可以帮忙
eric5786581 2019-05-01
  • 打赏
  • 举报
回复
帮你顶起,希望大神可以帮忙
qq_17233725 2019-02-26
  • 打赏
  • 举报
回复
目测楼主是一位刚入门
qq_39936465 2019-01-29
  • 打赏
  • 举报
回复
final是常量定义,而且final 被赋值后是不可再被赋值的,你把String赋值为null,String就一直为null,final要慎用。
menglixiazhiweizhi 2018-03-20
  • 打赏
  • 举报
回复
你本来想要做的功能,应该是:控制台输入一个字符串,去掉空格和换行符后,再截取输出。
你的方法里面犯了以下几个错误:
1:定义了一个静态常量为null的String对象(这个明明不建议用,可以看看java命名规范),并且将值赋予了方法里面,
如果你是测试情有可原,但是请将值写成你想测试的值,输入null在chuli(String)中str.indexOf()会报空指针异常
如果不是测试请将这个去掉。
2:如果对于1你不是测试,请在shuru()方法返回控制台输入的字符串,并在main方法中将这些字符串传给下面的方法,
否则你获取的还是你定义的静态常量,对于replaceBlank也是
3:最后你修改完以上的代码后,你控制台输入:aa还是会报错,因为你的str.indexOf(":");里面的":"你用的是中文输入的符号,
请改成英文输入法下的:,
4:改完以上代码你控制台输入正常的字符串例如:"123:1231111:132345"就可以了,但是你输入"aa"之类的还是会报错,这里是因为你输入的没有包含":"
所以你的代码需要加上判断是否有":",后面怎么处理我就不说了,你自己研究吧,下面是我改过的代码
package aa.com;
import java.util.Scanner;
import java.util.regex.Pattern;


public class Info {

public String replaceBlank(String str) {try{
String a1= "";

if (str!=null) {

Pattern p = Pattern.compile("\\s*|\t|\r|\n");

java.util.regex.Matcher m = p.matcher(str);

a1= m.replaceAll("");
}

return a1;}
catch(Exception e){System.out.println("清除空白时发生错误");
return ("123:1231111:132345");}

}
public String shuru(){
try{

System.out.println("输入数据点击回车");
Scanner in =new Scanner (System.in);
String str=in.next();
return str;
}

catch(Exception e){System.out.println("输入数据时发生错误");}
return null;
}
public String chuli(String str){
System.out.println(str);
try {
int a=str.indexOf(":");
//这里做判断输入的字符串没有":"的时候的处理
//if(a==-1){
// System.out.println("自己写");
//}
int b=str.indexOf(":",str.indexOf(":")+1);
System.out.println(""+a+":"+b);

//这里的值的判断也要注意你的数字计算是否大于等于0呢
System.out.println(str.substring(a+1,b-4));
System.out.println(str.substring(b+1,b+3));
return str;
}
catch(Exception e){
System.out.println("处理字符串时发生错误");
return str;
}
}
public static void main(String[] args) {
Info info=new Info();
String str = info.shuru();
String str1 = info.replaceBlank(str);
info.chuli(str1);
}
}
无涯子Gary 2018-01-08
  • 打赏
  • 举报
回复
目测楼主是一位 高僧
我是海亮啊 2017-02-21
  • 打赏
  • 举报
回复
人生处处是惊喜,作者说意不外以外,惊不惊喜,各中问题
ryuugu_rena 2017-02-20
  • 打赏
  • 举报
回复
定义一个空常量是亮点呀
jiajing1990_ 2017-02-20
  • 打赏
  • 举报
回复
我只能说 int a=str.indexOf(":"); int b=str.indexOf(":",str.indexOf(":")+1); System.out.println(str.substring(a+1,b-4)); System.out.println(str.substring(b+1,b+3)); 你这里处理的有问题 你可以分别把a和b输出看看是多少 ,然后看看你substring时里面的运算值运算后输出是多少,我之说这么多,答案你自己寻找更有意义
伯恩dadi 2016-02-01
  • 打赏
  • 举报
回复
:这个貌似是全角的吧,你的字符串是半角的,应该是indexof获取不到,substring导致出错,indexof完了应该判断一下比较好
qq_14881873 2016-02-01
  • 打赏
  • 举报
回复
你这个新手也太新的吧!首先你定义这个“private static final String String = null;”是用来接收输入的字符串吧,可是你定义的是final,而且最不能忍的是你这个变量名是“String”。第二,你这个“public void shuru()”函数是接收输入值的吧,可是你把输入值赋给了个局部变量“String str=in.next();”。第三,那两个方法还有些奇怪的处理逻辑,看不懂“return ("123:1231111:132345");”
kstd132 2016-02-01
  • 打赏
  • 举报
回复
eddie 2016-02-01
  • 打赏
  • 举报
回复
刚刚入行的吧? 建议问问身边的人,网上的人即使告诉你了,你也不会理解透的,还是问问身边的人,让他给你好好讲讲
kstd132 2016-02-01
  • 打赏
  • 举报
回复
kstd132 2016-02-01
  • 打赏
  • 举报
回复
package com.ljx; import java.io.*; import java.util.*; import java.util.regex.Pattern; import java.lang.*; public class Info { private static final String String = null; public String replaceBlank(String str) {try{ String a1= ""; if (str!=null) { Pattern p = Pattern.compile("\\s*|\t|\r|\n"); java.util.regex.Matcher m = p.matcher(str); a1= m.replaceAll(""); } return a1;} catch(Exception e){System.out.println("清除空白时发生错误"); return ("123:1231111:132345");} } public String shuru( ){ try{ System.out.println("输入数据点击回车"); Scanner sc =new Scanner (System.in); String str=sc.next(); return str;} catch(Exception e){System.out.println("输入数据时发生错误"); return ("123:1231111:132345"); } } public String chuli(String str){ try { int a=str.indexOf(":"); int b=str.indexOf(":",str.indexOf(":")+1); System.out.println(str.substring(a+1,b-4)); System.out.println(str.substring(b+1,b+3)); return str;} catch(Exception e){ System.out.println("处理字符串时发生错误"); return str; } } public static void main(String[] args) { Info info=new Info(); info.shuru(); info.replaceBlank(String); info.chuli(String); } } 改完之后的代码
kstd132 2016-02-01
  • 打赏
  • 举报
回复
求指导
引用 4 楼 qq_14881873 的回复:
你这个新手也太新的吧!首先你定义这个“private static final String String = null;”是用来接收输入的字符串吧,可是你定义的是final,而且最不能忍的是你这个变量名是“String”。第二,你这个“public void shuru()”函数是接收输入值的吧,可是你把输入值赋给了个局部变量“String str=in.next();”。第三,那两个方法还有些奇怪的处理逻辑,看不懂“return ("123:1231111:132345");”
我那个private static final String String = null;已经注视掉了应该不影响程序运行的呀。return ("123:1231111:132345");我是想发生异常了之后函数也能传递这个"123:1231111:132345"字符串给下一个函数处理可是返回的就是处理字符串发生异常、
kstd132 2016-01-29
  • 打赏
  • 举报
回复
第一次在论坛发帖,请多多指教!!!!!
kstd132 2016-01-29
  • 打赏
  • 举报
回复
顶起!!!新手希望有大神指点下谢谢O(∩_∩)O

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧