Java 分隔字符串中的整数和

Java 分隔字符串中的整数和,java,string,integer,sum,Java,String,Integer,Sum,给定一个分隔符字符串作为输入,将所有数字相加 例如: addNumbers("12 24 36") -> 72 addNumbers("12 12 100") -> 124 我尝试此操作时遇到数字格式异常 String a="12 34 4 676"; String b=a.replaceAll(" ", "+"); long num=Long.parseLong(a); 是的,因为12+34+4+676不是数字,而是表达式 在Java 8中,您可以执行以下操作: final

给定一个分隔符
字符串
作为输入,将所有数字相加

例如:

addNumbers("12 24 36") -> 72 
addNumbers("12 12 100") -> 124
我尝试此操作时遇到数字格式异常

String a="12 34 4 676";
String b=a.replaceAll(" ", "+");
long num=Long.parseLong(a);

是的,因为
12+34+4+676
不是数字,而是表达式

在Java 8中,您可以执行以下操作:

final int sum = Stream.of(a.split("\\s")).
        mapToInt(Integer::parseInt).
        sum();
在Java 7中,您可以执行以下操作:

int sum = 0;
for (final String s : a.split("\\s")) {
    sum += Integer.parseInt(s);
}

OP评论:我不想使用数组

我喜欢挑战,因此这里有一个使用
扫描仪的解决方案:

final Scanner scanner = new Scanner(a);
int sum = 0;
while(scanner.hasNextInt()) {
    sum += scanner.nextInt();
}

是的,因为
12+34+4+676
不是数字,而是表达式

在Java 8中,您可以执行以下操作:

final int sum = Stream.of(a.split("\\s")).
        mapToInt(Integer::parseInt).
        sum();
在Java 7中,您可以执行以下操作:

int sum = 0;
for (final String s : a.split("\\s")) {
    sum += Integer.parseInt(s);
}

OP评论:我不想使用数组

我喜欢挑战,因此这里有一个使用
扫描仪的解决方案:

final Scanner scanner = new Scanner(a);
int sum = 0;
while(scanner.hasNextInt()) {
    sum += scanner.nextInt();
}


无法分析包含运算符的字符串以直接获取值。使用
Split(“\\s”)
将其拆分,然后在数组中循环并找到总和。

您无法解析包含运算符的字符串以直接获取值。使用
Split(“\\s”)
将其拆分,然后循环遍历数组并找到总和。

将字符串按空格拆分,将每个部分解析为int,然后将它们添加到一起。因此,如果您输入
“12 34”
您想要
12++34
,请按空格拆分字符串,将每个部分解析为int,然后将它们添加到一起。如果您输入
“12 34”
您希望Java 8使用
12++34
?+1。我需要一段时间才能习惯Java新的类似Haskell的功能array@SumitKumarJadhav你想用什么?如果您对允许使用的内容有限制,它们应该是问题的一部分。没有数组,只有String和all String方法,并且为loop@SumitKumarJadhav在我看来,
split
是一种
String
方法。让你的要求更清楚。编辑您的问题。+1表示Java 8。我需要一段时间才能习惯Java新的类似Haskell的功能array@SumitKumarJadhav你想用什么?如果您对允许使用的内容有限制,它们应该是问题的一部分。没有数组,只有String和all String方法,并且为loop@SumitKumarJadhav在我看来,
split
是一种
String
方法。让你的要求更清楚。编辑你的问题。如果我循环一遍,我会得到每个字符的和,这里我要的是数字的和spaced@SumitKumarJadhav
str.split(\\s”)
返回字符串数组。他建议你循环,如果我循环,我会得到每个字符的和,这里我要的是数字的和spaced@SumitKumarJadhav
str.split(\\s”)
返回字符串数组。他建议你循环一下。