Java 方法,该方法获取字符串文本并返回已标识整数的和
该方法应采用字符串文本,标识字符串中的所有整数,并返回已标识整数的总和 例如,字符串“a2.05h34-9fmq26”包含整数2、5(05)、34、-9和26,因此该方法应返回58。到目前为止,我有以下代码:Java 方法,该方法获取字符串文本并返回已标识整数的和,java,Java,该方法应采用字符串文本,标识字符串中的所有整数,并返回已标识整数的总和 例如,字符串“a2.05h34-9fmq26”包含整数2、5(05)、34、-9和26,因此该方法应返回58。到目前为止,我有以下代码: public static int sumOfIntegers(String text) { int sum = 0; for(int i = 0; i < text.length(); i++) { if(Character.is
public static int sumOfIntegers(String text) {
int sum = 0;
for(int i = 0; i < text.length(); i++) {
if(Character.isDigit(text.charAt(i)))
sum = sum + Character.getNumericValue(text.charAt(i));
}
return sum;
}
公共静态整数(字符串文本){
整数和=0;
对于(int i=0;i
到目前为止,我可以对所有正整数求和,但我不确定的是如何从和中减去负整数。您可以使用a来查找数字组:
String s = "a2.05h34-9fmq26";
Pattern p = Pattern.compile("-?\\d+");
Matcher matcher = p.matcher(s);
int result = 0;
while (matcher.find()) {
result += Integer.parseInt(matcher.group());
}
System.out.println(result);
输出
58
模式
-?\d+
表示匹配一组一个或多个数字,前面可能有连字符。可以在文档中找到更多信息。很明显,如果一次将数字加一,则无法获得34这样的数字。您需要跟踪遇到的连续数字,并且仅当遇到非数字或字符串结尾时,才将它们添加到总和中
int sum = 0;
int currentValue = 0;
boolean negative = false;
for (int i = 0; i < text.length(); i++) {
char c = text.charAt(i);
if (Character.isDigit(c)) {
int digitValue = Character.getNumericValue(text.charAt(i));
currentValue = currentValue * 10;
if (negative) {
currentValue = currentValue - digitValue;
} else {
currentValue = currentValue + digitValue;
}
} else {
sum = sum + currentValue;
currentValue = 0;
negative = (c == '-');
}
}
sum = sum + currentValue;
return sum;
int和=0;
int currentValue=0;
布尔负=假;
对于(int i=0;i
解决方案当然有效。但是OP是初学者,不会学习如何处理问题,也不会学习如何思考。这就是为什么你的答案没有帮助。我不认为2.05是整数。@2题和05题中的WJS被视为两个不同的数字。你是对的。“头衔和其他人之间的另一个冲突。”门塔勒格说,就答案而言,这艘船很久以前就已经航行了。这就是为什么论坛更适合帮助新朋友,因为你可以与他们保持对话。有人告诉我,评论不适合这样做。