//Finding the sum of all digits present in a string
public class DigitSum{
public static void main(String args[]){
String str = "asd9od1dfjhd7sdhdsf21df6"; //Sum is 26
int sum = 0;
for(int i=0 ; i<str.length() ; i++)
{
if(str.charAt(i)>=48 && str.charAt(i)<=57)
sum = sum + Integer.parseInt(String.valueOf(str.charAt(i)));
}
System.out.println(sum);
}
}
____________________________________________________________________________
Variant - 1 : Find Sum of alldigits numbers present in a string and separated by space from other characters.
For e.g.
"1 Pappu is 16 years and read in 11 std. 2 of his friends are nuts.He has 8 siblings.He eats 89 pancakes everyday. 7 90"
Sum = 224
//Program to find sum of numbers present in a string and separated by space
public class DigitSum1{
public static void main(String args[]){
System.out.println(new DigitSum1().getSum("1 Ravi is 16 years and read in 11 std. 2 of his friends are nuts.He has 8 siblings.He eats 89 pancakes everyday. 7 90")); //224
}
public int getSum(String str){
String myNum="";
int sum = 0;
String prev = "nan";
//to read string character by character
for(int i=0 ; i<str.length() ; i++)
{
//if it is a digit, keep forming a number
if(str.charAt(i)>=48 && str.charAt(i)<=57)
{
myNum = myNum + String.valueOf(str.charAt(i));
prev = "number";
continue;
}
//if it is a space, add the number to variable sum
else
{
if(String.valueOf(str.charAt(i)).equals(" "))
{
try{
sum = sum + Integer.parseInt(myNum);
}
catch(NumberFormatException nfe){
myNum="0";
}
myNum="";
}
}
}
//Once execution come out of loop there may be a number left which wasn't added, so add it too
try{
sum = sum + Integer.parseInt(myNum);
}
catch(NumberFormatException nfe){
myNum="0";
}
return sum;
}
}
__________________________________________________________________________
Another way of implementing above
public class DigitSum2{
public static void main(String args[]){
System.out.println(new DigitSum2().getSum("1 Ravi is 16 years and read in 11 std. 2 of his friends are nuts.He has 8 siblings.He eats 89 pancakes everyday. 7 90"));
}
public int getSum(String str){
String myNum="";
int sum = 0;
String prev = "nan";
for(int i=0 ; i<str.length() ; i++)
{
if(str.charAt(i)>=48 && str.charAt(i)<=57)
{
myNum = myNum + String.valueOf(str.charAt(i));
prev = "number";
continue;
}
else
{
if(String.valueOf(str.charAt(i)).equals(" ") && prev.equals("number"))
{
sum = sum + Integer.parseInt(myNum);
prev = "nan";
myNum="";
}
}
}
if(prev.equals("number")) sum = sum + Integer.parseInt(myNum);
return sum;
}
}
public class DigitSum{
public static void main(String args[]){
String str = "asd9od1dfjhd7sdhdsf21df6"; //Sum is 26
int sum = 0;
for(int i=0 ; i<str.length() ; i++)
{
if(str.charAt(i)>=48 && str.charAt(i)<=57)
sum = sum + Integer.parseInt(String.valueOf(str.charAt(i)));
}
System.out.println(sum);
}
}
____________________________________________________________________________
Variant - 1 : Find Sum of all
For e.g.
"1 Pappu is 16 years and read in 11 std. 2 of his friends are nuts.He has 8 siblings.He eats 89 pancakes everyday. 7 90"
Sum = 224
//Program to find sum of numbers present in a string and separated by space
public class DigitSum1{
public static void main(String args[]){
System.out.println(new DigitSum1().getSum("1 Ravi is 16 years and read in 11 std. 2 of his friends are nuts.He has 8 siblings.He eats 89 pancakes everyday. 7 90")); //224
}
public int getSum(String str){
String myNum="";
int sum = 0;
String prev = "nan";
//to read string character by character
for(int i=0 ; i<str.length() ; i++)
{
//if it is a digit, keep forming a number
if(str.charAt(i)>=48 && str.charAt(i)<=57)
{
myNum = myNum + String.valueOf(str.charAt(i));
prev = "number";
continue;
}
//if it is a space, add the number to variable sum
else
{
if(String.valueOf(str.charAt(i)).equals(" "))
{
try{
sum = sum + Integer.parseInt(myNum);
}
catch(NumberFormatException nfe){
myNum="0";
}
myNum="";
}
}
}
//Once execution come out of loop there may be a number left which wasn't added, so add it too
try{
sum = sum + Integer.parseInt(myNum);
}
catch(NumberFormatException nfe){
myNum="0";
}
return sum;
}
}
__________________________________________________________________________
Another way of implementing above
public class DigitSum2{
public static void main(String args[]){
System.out.println(new DigitSum2().getSum("1 Ravi is 16 years and read in 11 std. 2 of his friends are nuts.He has 8 siblings.He eats 89 pancakes everyday. 7 90"));
}
public int getSum(String str){
String myNum="";
int sum = 0;
String prev = "nan";
for(int i=0 ; i<str.length() ; i++)
{
if(str.charAt(i)>=48 && str.charAt(i)<=57)
{
myNum = myNum + String.valueOf(str.charAt(i));
prev = "number";
continue;
}
else
{
if(String.valueOf(str.charAt(i)).equals(" ") && prev.equals("number"))
{
sum = sum + Integer.parseInt(myNum);
prev = "nan";
myNum="";
}
}
}
if(prev.equals("number")) sum = sum + Integer.parseInt(myNum);
return sum;
}
}