怎么用java把输入的字符串中的数字提取出来,并相加 输入数据样例: 12a3b@2p 输出数据样例: 1+2+3+2=8

 我来答
fengv7H
2011-09-27
知道答主
回答量:5
采纳率:0%
帮助的人:3.3万
展开全部

import java.util.Arrays;

import java.util.Scanner;

/** @author fengzi

 * E-mail:fengzi165@gmail.com | 1029511293@qq.com

 * 2011-9-27

 * 怎么用java把输入的字符串中的数字提取出来,并相加 输入数据样例: 12a3b@2p 

 * 输出数据样例: 1+2+3+2=8

 */

public class SumOfNum {

public static void main(String[] args) {

/*定义一个int[],用于接收字符串中的数字,本程序采用动态的增加数组的长度**/

int[] num = {};

Scanner sc = new Scanner(System.in);

//请输入字符串

System.out.println("请输入字符串");

//接收从控制台输入的字符串

String str = sc.nextLine();

//遍历字符串

for(int i=0 ; i<str.length() ; i++){

/*判断某个字符是否是数字,在ASCLL字符表中

 * 数字字符(0~9)对应的ASCLL码是从48 ~ 57,

 * 如果字符是在这个区间的,就把num数组的长度增加1

 * 然后把数据添加到数组的末尾

 * */

if(str.charAt(i)>=48 && str.charAt(i)<=57){

num = Arrays.copyOf(num, num.length + 1);

num[num.length - 1] = str.charAt(i);

}

}

//数字的和

int result = 0;

//s用于保存格式化输出的字符串

String s = "";

for(int i = 0 ; i < num.length ; i++){

if(i != num.length - 1){

/*如果 num[i]不是数组的最后一个数,则在字符串的后面加上" + "*/

s += num[i] - 48 + " + " ;

}else{

/*如果num[i]是数组的最后一个数,则在字符串的后面加上 " = "*/

s += num[i] - 48 + " = ";

}

//计算数字的  和

result += num[i] - 48;

}

//输出结果

System.out.println(s + result);

}

}

nailsoul
2011-10-01
知道答主
回答量:14
采纳率:0%
帮助的人:2.2万
展开全部
String str="12a3b@2p";
StringBuffer sb=new StringBuffer();
char[] ch=str.toCharArray();
String tmpStr;
for (int i=0;i<ch.length;i++){
tmpStr=ch[i]+"";
if(tmpStr.matches("\\d{1}")){
sb.append(tmpStr).append("+");
}
}
sb.deleteCharAt(sb.length()-1);
System.out.println(sb.toString());
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a4829201
2011-09-25 · TA获得超过159个赞
知道答主
回答量:142
采纳率:0%
帮助的人:125万
展开全部
思路:先把字符串转换成一个字符串数组,然后循环遍历数组,判断每个字符的ascii码,如果字符的ascii码在0-9的ascii码的范围之内 ,就拼接相加啦
提示:0-9的ascii码:48-57
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
长孙华黎
2011-09-27 · TA获得超过341个赞
知道答主
回答量:556
采纳率:0%
帮助的人:274万
展开全部
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class tst {
public static void main(String[] args) {
String s = "fas30deg60ds190$%^";
Matcher m = Pattern.compile("\\d+").matcher(s);
int num = 0;
while (m.find()) {
num = num + Integer.parseInt(m.group(0));
}
System.out.println(num);
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式