gpt4 book ai didi

Java程序获取字符串中存在的整数之和,考虑到其中一个整数出现在最末端

转载 作者:行者123 更新时间:2023-12-02 10:12:34 27 4
gpt4 key购买 nike

我想获取字符串“abc22gh20fg4”中存在的整数之和。我希望输出为 22+20+4=46

我编写了如下代码,但它给出了22+20=44。它没有考虑最后出现的数字。

public static void main(String[] args) {

String str = "abc22gh20fg4";
String num = "";
int sum = 0;
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
num = num + str.charAt(i);
} else {
if (!num.equals("")) {
sum = sum + Integer.parseInt(num);
num = "";
}
}
}
System.out.println(sum);
}

最佳答案

我会选择 split 而不是深度 for 循环:

    String str = "abc22gh20fg4";
String regex = "[^\\d]+"; // this will extract only digit
String[] strs = str.split(regex);
int sum = Arrays.stream(strs)
.filter(digits -> digits != null && !digits.equals(""))
.mapToInt(Integer::parseInt).sum();

System.out.println(sum);

如果你想在java 8之前

    String str = "abc22gh20fg4";
String regex = "[^\\d]+";
String[] strs = str.split(regex); // this will extract only digit
int sum = 0;
for (String digits:strs) { // iterate each digits
if (digits!=null && !digits.equals("")){ // check null or empty
sum += Integer.parseInt(digits); // parse and sum
}
}

System.out.println(sum);

更新:

您的实际问题是,当您循环遍历所有字符时,最后一个字符是 number 。它在没有 sum 的情况下退出循环,因此您需要检查它是否是最后一位数字总和。

public class Test {
public static void main(String[] args) {

String str = "abc22gh20fg4";
String num = "";

int sum = 0;
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
num = num + str.charAt(i);

if (i==str.length()-1){ // check if it is last
sum = sum + Integer.parseInt(num);
}

} else {
if (!num.equals("")) {
sum = sum + Integer.parseInt(num);
num = "";
}
}
}
System.out.println(sum);
}
}

关于Java程序获取字符串中存在的整数之和,考虑到其中一个整数出现在最末端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54902596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com