Saturday, June 20, 2015

Finding sum of all digits present in a string

//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 all digits 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;
}
}

No comments:

Post a Comment