Pages

Footer Pages

Spring Boot

Java String API

Java Conversions

Kotlin Programs

Kotlin Conversions

Java Threads Tutorial

Java 8 Tutorial

Thursday, December 12, 2019

Java Program To Add All Numbers In A String (Consecutive Digits Considered As One Number)

1. Introduction


In this tutorial, We will learn how to write a java program to add all numbers in a string. Here the ∫. Already shown a program on how to sum all digits in the string (in this case each digit considered as one number. In other words, taking into consideration each individual digit).


Examples of samples:

Exmaple 1:

Input 1: java10program2
Output 1: 12

Exmaple 2:

Input 2: hello100world200
Output 2: 300

Exmaple 3:

Input 3: nodigits
Output 3: 0


Java Program To Add All Numbers In A String


2. Java Example Program to add all numbers in a string


This program is similar to calculating the sum of each digit in the string. But the trick is in the question is multiple consecutive digits are considered as one number.

Logic to understand:


Logic is to run the loop from index 0 to length-1 and check each char whether is numeric or not. If numeric then add that character into a temp string. If the next character is numeric then again add this char to the exiting temp string. If next char is not numeric then add the number inside the temp string to the outputSum. Continue the same process untill it reaches the end of the string.

Let us take a look at the java program below.

package com.javaprogramto.engineering.programs;

public class StringAddAllConsecutiveNumbers {

    public static void main(String[] args) {

        // Input 1
        String input1 = "java10program2";
        int output1 = addAllConsecutiveNumbersInString(input1);
        System.out.println("Sum of all numbers in string " + input1 + " is " + output1);

        // Input 2
        String input2 = "hello100world200";
        int output2 = addAllConsecutiveNumbersInString(input2);
        System.out.println("Sum of all numbers in string " + input2 + " is " + output2);

        // Input 3

        String input3 = "nodigits";
        int output3 = addAllConsecutiveNumbersInString(input3);
        System.out.println("Sum of all numbers in string " + input3 + " is " + output3);

    }

    private static int addAllConsecutiveNumbersInString(String inputString) {

        int length = inputString.length();

        // initializing the output to 0. If no digit is found in the string then defalut
        // value 0 is returned.
        int digitsSum = 0;
        String temp = "0";

        for (int i = 0; i < length; i++) {

            char character = inputString.charAt(i);
            boolean isDigit = Character.isDigit(character);

            // adding the digit to the current digitSum value.
            if (isDigit) {
                temp = temp + character;
            } else {

                // converting the temp string to int and adding the numbers
                digitsSum = +Integer.parseInt(temp);

                // resetting to number 0
                temp = "0";
            }

        }

        // this is to handle the scenarios where the input string ends with numbers.
        digitsSum = +Integer.parseInt(temp);

        return digitsSum;
    }
}

Output:

Sum of all numbers in string java10program2 is 2
Sum of all numbers in string hello100world200 is 200
Sum of all numbers in string nodigits is 0

This program works for all types of inputs but whereas in the geekforgeeks program will not work if the input starts with non-numeric like "geeks4geeks".

3. Exception Thrown


When I have tried this program the first time, i faced the below problems. All the times i have been receiving this exception.
NumberFormatException is thrown because of it can not convert empty space "" to int type.
Finally, made the default temp value to "0".


Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:592)
    at java.lang.Integer.parseInt(Integer.java:615)
    at com.javaprogramto.engineering.programs.StringAddAllConsecutiveNumbers.addAllConsecutiveNumbersInString(StringAddAllConsecutiveNumbers.java:44)
    at com.javaprogramto.engineering.programs.StringAddAllConsecutiveNumbers.main(StringAddAllConsecutiveNumbers.java:9)

4. Conclusion


In this article, You have learned a java program to sum all long numbers present in the given string.

If you have any questions, please leave them in the comments section.

No comments:

Post a Comment

Please do not add any spam links in the comments section.