java 提出字符串中的数字并相加
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 提出字符串中的数字并相加相关的知识,希望对你有一定的参考价值。
输入一行字符串(少于80个字符),求其中数字的和。
输入数据包含一行字符串,中间存在多于两个数字。
在一行上输出字符串中数字的和,输出完后,不要回车换行。
public class Test
public static void main(String[] args)
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
int result = 0;
for (int i = 0; i < line.length(); i++)
if (Character.isDigit(line.charAt(i)))
result = result + Integer.parseInt(line.charAt(i) + "");
System.out.print(result);
例:输入:123
输出:6
兼容字符串中存在字母的情况:
输入:12ab3
输出:6 参考技术A import java.util.Scanner;
public class NumberTest
public static void main(String[] args)
System.out.println("输入一个字符串:");
Scanner scanner = new Scanner(System.in);
StringBuffer sb = new StringBuffer();
String line = scanner.nextLine();
char a[] = line.toCharArray();
System.out.println("打印出其中所有的数字:");
int result = 0;
for (int i = 0; i < a.length; i++)
if (Character.isDigit(a[i]))
sb.append(a[i]);
result = result + Integer.parseInt(String.valueOf(a[i]));
System.out.print(sb);
System.out.print("所有数字的和为:" + result);
参考技术B String str = "ab1cd23231";
char c;
int ii = 0,iSum = 0;
for(int i=0;i<str.length();i++)
c = str.charAt(i);
ii = (int)c;
if(ii > 57 || ii < 49)continue;
iSum += Integer.parseInt(c+"");
System.out.print("Sum = " + iSum); 参考技术C 比较每个字符的ASIIC码,在数字范围内就留下,不是跳过,最后相加就完了,很简单
怎么用java把输入的字符串中的数字提取出来,并相加 输入数据样例: 12a3b@2p 输出数据样例: 1+2+3+2=8
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);
参考技术A 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("\\d1"))
sb.append(tmpStr).append("+");
sb.deleteCharAt(sb.length()-1);
System.out.println(sb.toString());本回答被提问者采纳 参考技术B 思路:先把字符串转换成一个字符串数组,然后循环遍历数组,判断每个字符的ascii码,如果字符的ascii码在0-9的ascii码的范围之内 ,就拼接相加啦
提示:0-9的ascii码:48-57 参考技术C 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);
以上是关于java 提出字符串中的数字并相加的主要内容,如果未能解决你的问题,请参考以下文章
怎么用java把输入的字符串中的数字提取出来,并相加 输入数据样例: 12a3b@2p 输出数据样例: 1+2+3+2=8