java,从键盘输入一个字符串,计算其中的全部数字字符表示的数值之和。例如输入字符串1a2b3c,得1+2+3=6

如题所述

第1个回答  2013-09-25
import java.util.Scanner;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Test {
  public static void main(String[] args) {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("javascript");
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入:");
    String input = scanner.nextLine();
    if (input == null || "".equals(input.trim()))
      return;
    input = input.replaceAll("(?<=\\d)\\D+(?=(\\d|$))", "+");
    if (input.endsWith("+"))
      input = input.substring(0, input.length() - 1);
    if ("".equals(input.trim()))
      return;
    System.out.println(input);
    try {
      Double result = (Double) engine.eval(input);
      System.out.println("结果:" + result.intValue());
    } catch (ScriptException e) {
      System.err.println("表达式不正确。");
    }
  }
}

第2个回答  2013-09-25

用正则表达式

import java.util.Scanner;

public class $ {
    public static void main(String[] _) {

        String regex = "[^\\d]";

        Scanner in = new Scanner(System.in);

        System.out.print("输入字符串:");
        String str = in.next();

        String[] arr = str.split(regex);

        int sum = 0;
        for (String s : arr) {
            if (!"".equals(s)) {
                sum += Integer.parseInt(s);
            }
        }
        System.out.println(sum);
    }
}

本回答被提问者采纳
第3个回答  2013-09-25
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Num {
String s;
public void sum(){
Scanner sc = new Scanner(System.in);
s=sc.nextLine();
Pattern p=Pattern.compile("[^0-9]");
Matcher m=p.matcher(s);
String r=m.replaceAll("");
char a[]=r.toCharArray();
int num=0;
for(int j=0;j<a.length;j++){
String s1=String.valueOf(a[j]);
num=Integer.parseInt(s1)+num;

if(j==a.length-1){
System.out.print(a[j]);
}else{
System.out.print(a[j]+"+");
}
}
System.out.println("="+num);

}
public static void main(String[] args) {
new Num().sum();
}
}
第4个回答  2013-09-25
Pattern numberP = Pattern.compile("\\d");
Matcher matcher = numberP.matcher("1as2d3b");
int totalnum=0;
while (matcher.find()) {
totalnum+=Integer.parseInt(matcher.group());
}
System.out.println(totalnum);
第5个回答  2013-09-25
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = scan.next();
Pattern partten = Pattern.compile("[0-9]");
int sum = 0;
for (int i = 0; i < str.toCharArray().length; i++) {
Matcher matcher = partten.matcher(str.toCharArray()[i] + "");
if (matcher.matches()) {
sum += Integer.parseInt(str.toCharArray()[i] + "");
}
}
System.out.println("其中的全部数字字符表示的数值之和:");
System.out.println(sum);
}
}