分数 10
全屏浏览题目
切换布局
作者 abc618382
单位 河北科技大学
计算一个给定序列的整数和,序列中可能会混入无关的字母,求和的时候需要忽略。
输入格式:
输入为一行,元素直接使用空格分割。
输出格式:
输出为序列整数部分的和。
输入样例:
在这里给出一组输入。例如:
1 2 3 a 4 5
输出样例:
在这里给出相应的输出。例如:
15
思路:
本题主要考察了如何输入字符串后将字符串转换为字符串数组,之后在判断每一个字符串数组的元素是否是为整形,如果是整形的话将它累加。
问题1:字符串如何转化为数组,并以空格为分割点
使用split()方法
问题2:如何判断字符串数组元素为整形
这里用JAVA自带的函数public static boolean isNumeric(String str)
public static boolean isNumeric(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
}
其实还有很多的方法可以参考其他大佬问题3:如何把字符串转换成整形
使用Integer.parseInt()方法:这是将字符串转换为整数的最常见方法,前提是字符串必须包含一个有效的整数表示。如果字符串不是有效的整数表示,将抛出NumberFormatException异常。
代码:
import java.util.*;
public class Main{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();//nextLine()可以吃掉空格
String [] arr = str.split(" ");//元素用空格分割,字符串转为字符串数组
//System.out.println(Arrays.toString(arr));
//这里是输出字符串数组测试用的
int sum = 0;
for(int i =0 ; i < arr.length; i++)
{
if(isNumeric(arr[i]))
{
try
{
int num = Integer.parseInt(arr[i]);
sum+=num;
}
catch (NumberFormatException e)
{
System.out.println("0");
}
}
}
System.out.println(sum);
}
public static boolean isNumeric(String str)
{
for (int i = str.length();--i>=0;)
{
if (!Character.isDigit(str.charAt(i)))
{
return false;
}
}
return true;
}
}