java从一行字符串中提取数字
题目给出一个文本文档例如number.txt里面包含几行数字例如1234(数字之间有空格的)34711123然后要求得到如下输出(就是每一行的和)10265我试过这么做,...
题目给出一个文本文档例如number.txt里面包含几行数字
例如
1 2 3 4(数字之间有空格的)
3 4 7 1 11
2 3
然后要求得到如下输出(就是每一行的和)
10
26
5
我试过这么做,但是由于一行里面的数字不是独立数字 Integer.parseInt(line)转不出每一个数字,因此求不了总和。有什么办法解决呢?是不是要用数组来保存每一行的数字?
import java.io.*;
import java.util.*;
public class EchoSum extends Echo
{
public EchoSum (String datafile) throws IOException
{
super(datafile);
}
public void processLine(String line){
int sum = 0;
int num = Integer.parseInt(line);
sum+=sum;
}
} 展开
例如
1 2 3 4(数字之间有空格的)
3 4 7 1 11
2 3
然后要求得到如下输出(就是每一行的和)
10
26
5
我试过这么做,但是由于一行里面的数字不是独立数字 Integer.parseInt(line)转不出每一个数字,因此求不了总和。有什么办法解决呢?是不是要用数组来保存每一行的数字?
import java.io.*;
import java.util.*;
public class EchoSum extends Echo
{
public EchoSum (String datafile) throws IOException
{
super(datafile);
}
public void processLine(String line){
int sum = 0;
int num = Integer.parseInt(line);
sum+=sum;
}
} 展开
5个回答
展开全部
Integer.parseInt(line)如果不是数字会抛出NumberFormatException,学会捕获异常处理吧。。。
int a = 0;//必须定义在外部
try{
a = Integer.parseInt(line);
}catch(NumberFormatException e){
a = 0;//不能转换时当0处理键盯,这样累加就可稿昌和以了;除非你还要做平均,那么这里还迅培要踢出分母的次数
}
另:public EchoSum (String datafile) throws IOException
这种异常写在类里,尽量不要抛在方法上,去掉throws IOException
改写在方法里
int a = 0;//必须定义在外部
try{
a = Integer.parseInt(line);
}catch(NumberFormatException e){
a = 0;//不能转换时当0处理键盯,这样累加就可稿昌和以了;除非你还要做平均,那么这里还迅培要踢出分母的次数
}
另:public EchoSum (String datafile) throws IOException
这种异常写在类里,尽量不要抛在方法上,去掉throws IOException
改写在方法里
追问
谢谢你详细的解答,非常有帮助。我们正要学习这个try catch的使用方法,但我对这个写法还非常不熟悉,从这个解释里面我再研究一下。也很感谢cminirice,但hanyuekidd更点出问题所在~所以满意答案给hanyuekidd吧~谢谢你们
2015-12-26 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
可以通过循环判断是否是数字,如果是数字就提取出来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String line = "1 2 3 4"滚毕;
String[] array = line.split("做备烂纯漏\\s+");
int sum = 0;
for (int i = 0; i < array.length; i++) {
sum += Integer.parseInt(array[i]);
}
System.out.println(sum);
String[] array = line.split("做备烂纯漏\\s+");
int sum = 0;
for (int i = 0; i < array.length; i++) {
sum += Integer.parseInt(array[i]);
}
System.out.println(sum);
追问
谢谢~可惜不能选多个满意答案
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LZ,可以把整个文本文档读入,然后判断每一个字符,转换成char类型,判断其asc码的范围。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
支持二楼
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询