在String中添加数字而忽略其字母

时间:2015-05-18 00:01:26

标签: java

伙计们......我需要从用户那里获得String输入并仅添加其numeric values并忽略letters。例如,如果用户输入75Number5,则结果应为80800dadsadasdwwfvv0002,结果应为802。但我经常得到0

import java.util.Scanner;

public class NumberAddition {

    public static void main(String[] args)
    {
        Scanner kbd = new Scanner(System.in);

        System.out.println("Enter any String: ");
        String myString = kbd.nextLine();
        myString = myString.toLowerCase();
        int result = 0;

        for(int i = 0; i < myString.length(); i++)
        {
            if(myString.charAt(i) != '1' || myString.charAt(i) != '2' ||
                    myString.charAt(i) != '3' || myString.charAt(i) != '4' ||
                    myString.charAt(i) != '5' || myString.charAt(i) != '6' ||
                    myString.charAt(i) != '7' || myString.charAt(i) != '8' ||
                    myString.charAt(i) != '9')
            result += 0;
            else 
                result += myString.charAt(i);
        }

        System.out.println("The result is " + result);
    }
}

3 个答案:

答案 0 :(得分:3)

如果我理解了您的问题,那么您可以使用StringBuilder来构建仅限数字的String版本。您可以使用Character.isDigit(char)来测试该条件。您可以使用增强的for-each loop来迭代支持String的char数组

Scanner kbd = new Scanner(System.in);
System.out.println("Enter any String: ");
String myString = kbd.nextLine();
StringBuilder sb = new StringBuilder();
for (char ch : myString.toLowerCase().toCharArray()) {
    if (Character.isDigit(ch)) {
        sb.append(ch);
    }
}
int result = Integer.parseInt(sb.toString());
System.out.println("The result is " + result);

答案 1 :(得分:2)

虽然有一个已接受的答案(并且通过对其进行少量增强来获得OP的理想行为并不困难),但我还是希望使用正则表达式提供另一种选择:

int i = 0;
for (String s : "asdfa800dadsadasdwwfvv0002".split("\\D+")) {
    i += (s.isEmpty() ? 0 : Integer.parseInt(s));
}
System.out.println("result : " + i);

简而言之:用非数字字符拆分字符串。将拆分结果的每个部分转换为整数并将它们相加。

如果您使用的是Java 8,则代码可以进一步简化&#34;到:

  int sum = Arrays.stream(yourInputString.split("\\D+"))
              .filter(s-> !s.isEmpty()).mapToInt(Integer::parseInt).sum();  

答案 2 :(得分:0)

  1. 将输出变量初始化为0
  2. 循环遍历字符串
  3. 使用String.charAt(int index)获取字符串
  4. 中的每个字符
  5. 使用Character.isDigit(char ch)测试字符是否为数字
  6. 如果字符不是数字,则忽略它并继续下一个循环周期
  7. 如果字符是数字,则将其转换为int(int i = x - '0')
  8. 将整数添加到步骤#1的输出变量
  9. 当循环结束时,返回步骤#1的输出变量