Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将字符串中的整数相加?JAVA_Java_Numeric - Fatal编程技术网

如何将字符串中的整数相加?JAVA

如何将字符串中的整数相加?JAVA,java,numeric,Java,Numeric,我一直在寻找一种在字符串中添加整数的方法,并发现了一些不同的回答,如使用: String line = "123456789"; int total = 0; for (int i = 0;i<line.length();i++) { total += Character.getNumericValue(line.charAt(i)); } String line=“123456789”; int-total=0; 对于(int i=0;i您可以将字符串转换为IntStream(

我一直在寻找一种在字符串中添加整数的方法,并发现了一些不同的回答,如使用:

String line = "123456789";
int total = 0;
for (int i = 0;i<line.length();i++) {
    total += Character.getNumericValue(line.charAt(i));
}
String line=“123456789”;
int-total=0;

对于(int i=0;i您可以将字符串转换为
IntStream
(这将为每个字符提供ascii码),然后使用
Character::getNumericValue
将ascii码转换为相应的数值:

"123".chars().map(Character::getNumericValue).sum()

如问题注释中所述,这虽然较短,但并不是最好的方法。在实际应用中,我会使用扩展版本以提高可读性。

您可以将字符串转换为
IntStream
(这将为每个字符提供ascii码)然后使用
字符::getNumericValue
将ascii码转换为相应的数值:

"123".chars().map(Character::getNumericValue).sum()

正如问题注释中所述,这虽然简短,但不是最好的方法。在实际应用中,我会使用扩展版本以提高可读性。

如果您愿意,可以尝试以下方法:

int x = Integer.parseInt(line)
while (x > 0) {
   sum = sum + x % 10;
   x = x / 10;
 }
或者与regex类似:

Pattern p = Pattern.compile("\\d"); //single digit
Matcher m = p.matcher(line);
while (m.find()) {            
   sum = sum + Integer.parseInt(m.group()); // convert in int every digit
}

如果您愿意,可以尝试以下方法:

int x = Integer.parseInt(line)
while (x > 0) {
   sum = sum + x % 10;
   x = x / 10;
 }
或者与regex类似:

Pattern p = Pattern.compile("\\d"); //single digit
Matcher m = p.matcher(line);
while (m.find()) {            
   sum = sum + Integer.parseInt(m.group()); // convert in int every digit
}

如果不想循环字符串,请尝试此操作。在这种情况下,您必须使用循环,但在某些情况下,循环将“更短”,即,如果字符串看起来像“0000000 23”,则循环将只运行2次,而不是运行9次

String s = "123456789";
 int x = Integer.parseInt(s);
 int sum = 0,val;
 while(x>0)
 {
   val = x%10;
   sum = sum + val;
   x = x/10;
 }

如果不想循环字符串,请尝试此操作。在这种情况下,您必须使用循环,但在某些情况下,循环将“更短”,即,如果字符串看起来像“0000000 23”,则循环将只运行2次,而不是运行9次

String s = "123456789";
 int x = Integer.parseInt(s);
 int sum = 0,val;
 while(x>0)
 {
   val = x%10;
   sum = sum + val;
   x = x/10;
 }

你所说的“只会”是什么意思?编写代码总是有一种较短的方法,但你应该真正退一步,问问自己这样做是否有利于代码的可读性选项1是使用循环从每个字符中获取值并将其相加。选项2是
int total=45
“只会”因此,它会自动将0-9之间的每个整数的值相加。你说的自动是什么意思?你说它只是什么意思?编写代码总是有一种较短的方法,但你应该真正后退一步,问问自己,如果执行此操作,代码的可读性是否会受益。选项1是使用循环从每个字符中获取值选项2是
int-total=45
“它只会”这样它会自动将0-9之间的每个整数的值相加。你说的自动相加是什么意思?