java程序返回参数String中找到的所有整数的总和

时间:2014-03-21 06:15:18

标签: java

我想写一个java程序来返回参数String中找到的所有整数的总和。 例如,取一个字符串:“12喜欢8和9” 现在答案是12 + 8 + 9 = 29。 但我真的不知道甚至如何开始可以帮助这个!

9 个答案:

答案 0 :(得分:5)

您可以从string替换所有非数字开始spacespilt根据space

替换所有非数字
String str = "12 hi when 8 and 9";
str=str.replaceAll("[\\D]+"," ");
String[] numbers=str.split(" ");
int sum = 0;
for(int i=0;i<numbers.length;i++){
    try{
        sum+=Integer.parseInt(numbers[i]);
    }
    catch( Exception e ) {
      //Just in case, the element in the array is not parse-able into Integer, Ignore it
    }
}
System.out.println("The sum is:"+sum);

答案 1 :(得分:0)

您应使用扫描仪阅读字符串

   Scanner s = new Scanner(your string);

然后使用

阅读
  s.nextInt();

然后添加这些整数。

答案 2 :(得分:0)

以下是一般算法:

  1. 将您的金额初始化为零。
  2. 按空格拆分字符串,并为每个标记:
    • 尝试将令牌转换为整数。
    • 如果没有抛出异常,则将整数添加到总和中。

  3. 这是一个编码示例:

    int sumString(String input)
    {
        int output = 0;
        for (String token : input.split(" "))
        {
            try
            {
                output += Integer.parseInt(token);
            }
            catch (Exception error)
            {
            }
        }
        return output;
    }
    

答案 3 :(得分:0)

private static int getSumOfIntegersInString(String string) {
    /*Split the String*/
    String[] stringArray = string.split(" ");
    int sum=0;
    int temp=0;
    for(int i=0;i<stringArray.length;i++){
        try{
            /*Convert the numbers in string to int*/
            temp = Integer.parseInt(stringArray[i]);
            sum += temp;
        }catch(Exception e){
            /*ignore*/
        }
    }
    return sum;
}

答案 4 :(得分:0)

您可以使用正则表达式

Pattern p = Pattern.compile("\\d+");
String s = " 12 hi when 8 and 9" ;
Matcher m = p.matcher(s);
int start = 0;
int sum=0;
while(m.find(start)) {
    String n = m.group();
    sum += Integer.parseInt(n);
    start = m.end();
}
System.out.println(sum);

这种方法不要求用空格分隔项目,这样就可以使用&#34; 12hiwhen8and9&#34;。

答案 5 :(得分:0)

假设您的单词由空格分隔:

然后将输入字符串拆分为“标记”(不带空格的连续字符)。 然后循环它们,尝试将它们转换为整数,如果抛出异常,则表示此标记不表示整数。

代码:

public static int summary(String s) {
    String[] tokens = s.split("\\s+");
    int sum = 0;
    for(String token : tokens) {
        try {
            int val = Integer.parseInt(token);
            sum += val;
        }
        catch(NumberFormatException ne){
            // Do nothing
        }
    }
    return sum;
}

答案 6 :(得分:0)

 String s ="12 hi when 8 and 9";
     s=s.replaceAll("[^0-9]+", " ");

     String[] numbersArray= s.split(" ");
     Integer sum = 0;
     for(int i = 0 ; i<numbersArray.length;i++){
         if(numbersArray[i].trim().length() != 0){
             Integer value = Integer.valueOf(numbersArray[i].trim());
             sum = sum + value;

         }
     }

     System.out.println(sum);

答案 7 :(得分:0)

您可以查看以下代码: -

public class Class02 
{
    public static void main(String[] args) 
    {
        String str = "12 hi when 8 and 9";
        int sum = 0;
        List<String> list = new ArrayList<String>();
        StringTokenizer st = new StringTokenizer(str.toLowerCase());
        while(st.hasMoreElements())
        {
            list.add(st.nextToken());
        }
        for(int i =0; i< list.size();i++)
        {
            char [] array = list.get(i).toCharArray();
            int num = array[0];
            if(!(num >= 'a' && num <= 'z'))
            {
                int number = Integer.valueOf((list.get(i).toString()));
                sum = sum + number;
            }
        }
        System.out.println(sum);
    }
}

希望它会对你有所帮助。

答案 8 :(得分:0)

我知道这没有Java8标签,但我会把它放在那里以防有人发现它有趣

String str = "12 hi when 8 and 9";
System.out.println(Arrays.stream(str.split(" "))
      .filter(s -> s.matches("[0-9]+")).mapToInt(Integer::parseInt).sum());

很好地打印出29