识别输入字符串中的数字和字母

时间:2014-07-09 13:51:38

标签: java string input

到目前为止我没有问题获取长度,但识别字母中的数字很难可以任何人帮助我在这里感谢帮助继承人新代码我的新问题是在计算字符串中的元素将不会计算输入的数字,例如地址示例99 San pedro st philippines .....它只计算San pedro st philippines .........

import java.util.Scanner;

public class Exercise3
{ 
    public static void main(String [] args)
    {  
        Scanner scan= new Scanner(System.in); 
        System.out.println("Enter String:"); 
        String s=scan.nextLine();
        s = s.replace(" ","");
        System.out.println("Total of Elements is: " + s.length());

        int nDigits =0,nLetters =0,sum =0;
        for(int i =0;i<s.length();i++)
        {
        Character ch = s.charAt(i);
        if(Character.isDigit(ch)){
        nDigits++;
        sum += Integer.parseInt(ch.toString());
    }
        else if (Character.isLetter(ch)){
        nLetters++;
    }
   }
        System.out.println("The sum of numbers in the string: " + sum);
        }
      }
   }

1 个答案:

答案 0 :(得分:0)

看起来您的问题在于行sum += Integer.parseInt(s.toString());。您正在获取整个InputStream的字符串值,这几乎肯定是您不想要的。我假设你打算做sum += Integer.parseInt(s.charAt(i).toString());,它只会给你每个数字的值。请记住字符串hello43world,它将返回7(4 + 3),而不是43。

编辑:要做你真正想要的 - 字符串中的字母数,请尝试

public static int getSum(String s)
{
    int sum = 0;
    for(int i = 0; i < s.length(); i++)
    {
        if(Character.isLetter(s.charAt(i)))
        {
            sum ++;
        }
    }
    return sum;
}

这只会计算字符串中的字符数 - 比不计算不是字符的所有内容要容易得多。