Java 求字符串数组中所有整数字符串的和,忽略非整数字符串
String[] nums = {"111","123.4","222","333"};
以上面的数组为例。如果单纯将每个字符串转化为整数然后求和,遇到不符合要求的字符串时,会抛出异常。程序中断,无法得到最终结果。
int sum = 0;
int item = 0;
String[] nums = {"111","123.4","222","333"};
for(String str: nums) {
//将字符串转化为整数
item = Integer.parseInt(str);
//输出转化的结果
System.out.println(item);
//求和
sum += item;
}
//最后输出求和结果
System.out.println(sum);
输出第一个数字111后,出现下列异常(NumberFormatException):
我想到的是捕获这个异常,进行处理,让程序可以继续运行。代码修改如下:
int sum = 0;
int item = 0;
String[] nums = {"111","123.4","222","333"};
for(String str: nums) {
try {
item = Integer.parseInt(str);
System.out.println(item);
} catch(NumberFormatException e) {
//捕获异常之后,进行输出
System.out.println("该字符串"+str+"不能转化为整数");
//继续下一个循环
continue;
}
sum += item;
}
System.out.println(sum);
最后的输出结果是666,结果截图如下:
如果是从终端输入一些数字字符串进行求和,也可以采用这个思路。
提到这个是因为我看到了一个提问:一个有关“求输入的每个整数的和,忽略输入的非整数”的问题 要求当输入999时终止输入并输出结果。已经有很多回答了,都说是要捕获异常,然后进行处理,使得能够继续读取输入。我也写了一下:
//求输入的所有整数的和,当输入999时终止输入,并输出求和
Scanner sc = new Scanner(System.in);
//记录每一个整数的值
int item = 0;
//记录最后的求和
int sum = 0;
while(true) {
try {
item = sc.nextInt();
if(item == 999) {
break;
}
} catch(InputMismatchException e) {
System.out.println("注意输入整数,请重新输入");
//下面这句很重要。如果没有这句,缓冲区里一直会读错误的那个值,并且一直输出 上面所写的"注意输入整数,请重新输入"
sc.next();
continue;
}
sum += item;
}
System.out.println("sum:"+sum);
我试着运行是没有问题的。
原文作者:yangc_cong
原文地址: https://blog.csdn.net/yangc_cong/article/details/90774718
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/yangc_cong/article/details/90774718
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章