Java 查找字符串中的数字之和?

Java 查找字符串中的数字之和?,java,string,methods,Java,String,Methods,我必须在一个包含“a-z”、“0-9”和“-”的字符串中找到数字的总和,如果数字前面有“-”,我将这个数字算作负数。 例如,我有以下文本: asd-12sdf45-56asdf100,数字-12,45,-56和100的总和77 我设法把所有的字母都换了,结果出来了-1255-56100,我被困在这里了。我尝试拆分成数组,然后parseInt,我尝试了一些使用循环的方法,但是没有结果。。。有什么帮助吗 它可能不是完整的代码;如果你给我一个提示,我可能会自己解决剩下的问题 这是我到目前为止写的代码

我必须在一个包含“a-z”、“0-9”和“-”的字符串中找到数字的总和,如果数字前面有“-”,我将这个数字算作负数。 例如,我有以下文本:

asd-12sdf45-56asdf100
,数字
-12,45,-56和100的总和
77

我设法把所有的字母都换了,结果出来了
-1255-56100
,我被困在这里了。我尝试拆分成数组,然后
parseInt
,我尝试了一些使用循环的方法,但是没有结果。。。有什么帮助吗

它可能不是完整的代码;如果你给我一个提示,我可能会自己解决剩下的问题

这是我到目前为止写的代码

String text = "asd-12sdf45-56asdf100";
String numbers = text.replaceAll("[a-zA-Z]+", " ");
String[] num = numbers.trim().split("[ ]");

int sum = 0;
for (int index = 0; index < num.length; index++) {
    int n = Integer.parseInt(num[index]);
    sum += n;
}
System.out.println(sum);
String text=“asd-12sdf45-56asdf100”;
字符串编号=text.replaceAll(“[a-zA-Z]+”,”);
字符串[]num=numbers.trim().split([]);
整数和=0;
对于(int index=0;index

注:我的IT教育还处于起步阶段,所以请尽量简单:D提前谢谢

这听起来很像是学习正则表达式的家庭作业问题。所以我不会为你回答这个问题。但是,您可能会发现下面这样的工具对使用正则表达式很有用:

String s = "-12 45-56 100";
int sum = Stream.of(s.replaceAll("-", " -").split(" ")).filter(e -> !"".equals(e)).mapToInt(Integer::parseInt).sum();
此外,还有大量关于如何使用正则表达式的参考资料:


您可以将负数和正数添加到单独的列表中,然后分别添加它们,然后进行减法运算

可以使用正则表达式匹配字符串中可能出现的数字。我使用的正则表达式是基于字符串中有负号或无负号时数字可能出现的假设

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        final String regex = "[-]*[0-9]+";
        final String string = "asd-12sdf45-56asdf100";

        final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
        final Matcher matcher = pattern.matcher(string);

        int sum = 0;

        while (matcher.find()) {
            System.out.println("Found number: " + matcher.group(0));
            sum += Integer.parseInt(matcher.group(0));
        }

        System.out.println("Sum = "+sum);
    }
}

Output : 

Found number: -12
Found number: 45
Found number: -56
Found number: 100
Sum = 77

请尝试一下,然后发布你的代码。Stackoverflow社区无法为您提供现成的解决方案,首先您必须自己尝试解决。谢谢,抱歉!:)提示:A)不要在这样的第一次测试中使用用户输入,只需在代码中硬编码一个字符串示例(这也使您的读者能够理解该代码正在做什么…和B)当您已经有了不起作用的代码时,请参见。谢谢,使其正确。我认为您已经想到的还不算太糟糕。在这种方法中唯一仍然存在问题的是“45-56”。但这很容易解决,只要确保任何减号之前始终有空格。OP已经做到这一点:
-12 45-56 100
注意,空格现在还没有在减号之前。也许先解决这个问题,然后你的答案会很好。我尝试过使用正则表达式,但正则表达式太疯狂了,这个任务应该不会那么难。但是,使用正则表达式也不能真正起作用:(但这些网站非常有用!谢谢!这要看情况而定。通常有多个工作正则表达式,在这种情况下,它可能相当简单。我的建议是生成多个测试字符串,一个没有数字,一个只有一位数正数,一个有多位数正数,然后再生成一个与您的问题类似的测试字符串。然后试着从最简单的开始解决它们。不要担心复杂性。正则表达式对于初学者来说几乎总是太多了,给自己一些时间来理解这个概念。对于任何开发人员来说,它都是一个非常强大的工具,所以值得努力。