preeth
preeth

Reputation: 365

java program to return the sum of all integers found in the parameter String

i want write a java program to return the sum of all integers found in the parameter String. for example take a string like:" 12 hi when 8 and 9" now the answer is 12+8+9=29. but i really dont know even how to start can any one help in this!

Upvotes: 1

Views: 30680

Answers (9)

Kannan Ekanath
Kannan Ekanath

Reputation: 17601

I understand that this does not have the Java8 tag but I will put this out there in case someone finds it interesting

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());

would nicely print out 29

Upvotes: 0

CK__
CK__

Reputation: 1311

You can have a look on the following code :-

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);
    }
}

Hope it will help you.

Upvotes: 0

java.mypassion
java.mypassion

Reputation: 95

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

Upvotes: 0

yellowB
yellowB

Reputation: 3020

Assume your words are separated by whitespace(s):

Then split your input string into "tokens"(continuous characters without whitespace). And then loop them, try to convert each of them into integer, if exception thrown, means this token doesn't represents a integer.

Code:

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;
}

Upvotes: 0

Salix alba
Salix alba

Reputation: 7824

You could use a regular expression

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

This approach does not require the items to be separated by spaces so it would work with "12hiwhen8and9".

Upvotes: 0

Baby
Baby

Reputation: 5092

You may start with replacing all non-numbers from the string with space, and spilt it based on the 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);

Upvotes: 7

anand mahuli
anand mahuli

Reputation: 135

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;
}

Upvotes: 0

barak manos
barak manos

Reputation: 30136

Here is the general algorithm:

  1. Initialize your sum to zero.
  2. Split the string by spaces, and for each token:
    • Try to convert the token into an integer.
    • If no exception is thrown, then add the integer to your sum.

And here is a coding example:

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

Upvotes: 0

Sanjeev
Sanjeev

Reputation: 9946

You shall use Scanner to read your string

   Scanner s = new Scanner(your string);

And then read it using

  s.nextInt();

Then add these integers.

Upvotes: 0

Related Questions