【发布时间】:2015-04-27 12:04:26
【问题描述】:
我得到一个包含数字的字符串,
例如:- 123312351863
将每个数字分开并将它们相加的最佳方法是什么?
例如总数38
【问题讨论】:
-
哦,请在这里发布您的努力.. 拥有 1k+ 的声誉,为什么这种低质量的帖子?
-
哈希:你不能。例如,第一个数字可以是 1,也可以是 12,或 123,或 ....
我得到一个包含数字的字符串,
例如:- 123312351863
将每个数字分开并将它们相加的最佳方法是什么?
例如总数38
【问题讨论】:
我不会给你确切的答案。
- 使用
Integer.parseInt()或Long.parseLong()将整个字符串解析为整数。基于适当的尺寸。- 您可以使用以下 2 个运算符添加每个数字 ->
/和%。- 您还需要一个
while循环。
注意:对于非常大的数字或数字以0 开头的情况,此方法会失败。您确实可以使用charAt() + 其他一些字符串方法来做到这一点。
【讨论】:
for 循环并迭代 char 数组并继续将值转换为int 并添加它们。
public class Simple {
public static void main(String `args`[]){
String str = "123456789";
Integer total = 0;
for (Character eachNumber : str.toCharArray()) {
total += Integer.parseInt(eachNumber.toString());
}
System.out.println(total);
}
}
【讨论】:
Java 8 中的捷径:
String s = "123312351863";
int sum = s.chars().map(Character::getNumericValue).sum();
【讨论】:
试试这样:
int res = 0;
String s= "123312351863";
for (int i = 0; i < s.length(); i++)
{
String str= ""+s.charAt(i);
int b = Integer.parseInt(str);
res = res + b;
}
System.out.println(res);
【讨论】:
您可以先使用String.split("") 将字符串拆分为单个字符(请注意,对于java8 之前的版本,它会在开头给出一个空字符串)
然后,迭代String[]、parse each number to int,并对它们求和
【讨论】:
您可以通过 "" 拆分字符串,然后将每个字符串转换为 Integer 并对数字求和。例如。在 Java 8 中
System.out.println(Stream.of(s).map(x -> x.split("")).flatMap(Arrays::stream).mapToInt(Integer::parseInt).sum());
输出
38
【讨论】:
你也可以这样做
loop 和chatAt() 遍历字符串的字符。Character.getNumericValue(yourChar) 将字符转换为 int 值。【讨论】:
我会尝试如下
public static void main(String args[])
{
String x="123312351863";
String r[]=x.split("");int sum=0;
for(int i=1;i<=x.length();i++)
{
sum+=Integer.parseInt(r[i]);
}
System.out.println(sum);
}
【讨论】: