Java 求字符串数组中所有整数字符串的和,忽略非整数字符串

2023-01-02 00:00:00 字符串 整数 组中
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):

《Java 求字符串数组中所有整数字符串的和,忽略非整数字符串》

我想到的是捕获这个异常,进行处理,让程序可以继续运行。代码修改如下:

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,结果截图如下:

《Java 求字符串数组中所有整数字符串的和,忽略非整数字符串》

如果是从终端输入一些数字字符串进行求和,也可以采用这个思路。

提到这个是因为我看到了一个提问:一个有关“求输入的每个整数的和,忽略输入的非整数”的问题 要求当输入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);

我试着运行是没有问题的。

《Java 求字符串数组中所有整数字符串的和,忽略非整数字符串》

 

 

《Java 求字符串数组中所有整数字符串的和,忽略非整数字符串》

    原文作者:yangc_cong
    原文地址: https://blog.csdn.net/yangc_cong/article/details/90774718
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章