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

本文探讨了在处理字符串数组并将其转换为整数求和的过程中,如何通过异常处理机制避免程序中断,确保非整数字符串不会导致求和失败。同时,介绍了在终端输入整数并求和时,如何使用异常捕获来处理非整数输入,实现程序的健壮性和连续性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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):

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

运行结果,可以正常求和,最后结果是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);

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

运行结果

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值