推薦答案
在Java中,從字符串中提取數(shù)字并求和可以通過多種方法實現(xiàn)。下面是一個示例代碼,展示了如何使用不同的方法提取數(shù)字并計算它們的總和:
public class SumOfNumbers {
public static void main(String[] args) {
String str = "abc123def456ghi789";
int sum = 0;
// 方法1: 正則表達式提取數(shù)字
String[] numbers = str.replaceAll("[^0-9]+", " ").trim().split(" ");
for (String number : numbers) {
sum += Integer.parseInt(number);
}
System.out.println("方法1: 正則表達式提取數(shù)字");
System.out.println("字符串中的數(shù)字為: " + Arrays.toString(numbers));
System.out.println("數(shù)字的總和為: " + sum);
// 方法2: 字符處理方法提取數(shù)字
sum = 0;
StringBuilder numberBuilder = new StringBuilder();
for (char c : str.toCharArray()) {
if (Character.isDigit(c)) {
numberBuilder.append(c);
} else if (numberBuilder.length() > 0) {
sum += Integer.parseInt(numberBuilder.toString());
numberBuilder.setLength(0);
}
}
if (numberBuilder.length() > 0) {
sum += Integer.parseInt(numberBuilder.toString());
}
System.out.println("方法2: 字符處理方法提取數(shù)字");
System.out.println("數(shù)字的總和為: " + sum);
// 方法3: 使用正則表達式和流式操作提取數(shù)字并求和
sum = Arrays.stream(numbers)
.mapToInt(Integer::parseInt)
.sum();
System.out.println("方法3: 使用正則表達式和流式操作提取數(shù)字并求和");
System.out.println("數(shù)字的總和為: " + sum);
}
}
在以上代碼中,我們使用了三種不同的方法來提取字符串中的數(shù)字并計算它們的總和。
方法1使用正則表達式 replaceAll("[^0-9]+", " ") 替換非數(shù)字字符為空格,并使用 split(" ") 將字符串拆分為數(shù)字字符串數(shù)組。然后,我們遍歷數(shù)組并使用 Integer.parseInt() 將每個數(shù)字字符串轉(zhuǎn)換為整數(shù),并將其加到總和中。
方法2使用字符處理方法遍歷字符串中的每個字符。如果字符是數(shù)字,則將其添加到 numberBuilder 對象中。一旦遇到一個非數(shù)字字符,我們將 numberBuilder 中的數(shù)字字符串轉(zhuǎn)換為整數(shù),并將其加到總和中。
方法3使用正則表達式提取數(shù)字字符串,并使用流式操作將它們轉(zhuǎn)換為整數(shù),并使用 sum() 方法計算它們的總和。
以上代碼演示了三種不同的方法來解決提取字符串中的數(shù)字并求和的問題。你可以根據(jù)實際情況選擇適合的方法,并根據(jù)需要進行進一步的處理和調(diào)整。
其他答案
-
在Java中,要從字符串中提取數(shù)字并求和,可以使用正則表達式和循環(huán)遍歷的方法。下面是一個示例代碼,展示了如何使用這些方法來實現(xiàn):
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SumOfNumbers {
public static void main(String[] args) {
String str = "abc123def456ghi789";
int sum = 0;
String patternString = "\\d+";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
String numberString = matcher.group();
int number = Integer.parseInt(numberString);
sum += number;
}
System.out.println("從字符串中提取的數(shù)字為: " + sum);
}
}
在以上代碼中,我們首先定義了一個正則表達式模式 \\d+,它用于匹配一個或多個數(shù)字。然后,我們使用該模式創(chuàng)建了一個 Pattern 對象,并使用 matcher() 方法創(chuàng)建了一個 Matcher 對象,用于在字符串中查找匹配的數(shù)字。
通過調(diào)用 find() 方法,我們可以逐個查找字符串中匹配的數(shù)字。如果找到匹配的數(shù)字,我們可以使用 group() 方法獲取匹配的部分,即數(shù)字字符串。然后,我們使用 Integer.parseInt() 方法將數(shù)字字符串轉(zhuǎn)換為整數(shù),并將其加到總和中。
在上述示例中,字符串 "abc123def456ghi789" 包含數(shù)字 "123"、"456" 和 "789",所以代碼將計算這些數(shù)字的總和。
以上代碼演示了使用正則表達式和循環(huán)遍歷的方法來從字符串中提取數(shù)字并求和。你可以根據(jù)自己的需求選擇合適的方法,并根據(jù)需要進行進一步的處理和調(diào)整。
-
要在Java中從字符串中提取數(shù)字并求和,可以使用字符串處理方法和流式操作的組合。下面是一個示例代碼,展示了如何使用這些方法來實現(xiàn):
public class SumOfNumbers {
public static void main(String[] args) {
String str = "abc123def456ghi789";
int sum = str.replaceAll("\\D+", "")
.chars()
.map(Character::getNumericValue)
.sum();
System.out.println("從字符串中提取的數(shù)字總和為: " + sum);
}
}
在以上代碼中,我們首先使用 replaceAll("\\D+", "") 方法將字符串中的非數(shù)字字符替換為空字符串。這樣我們得到一個只包含數(shù)字字符的字符串。
然后,我們使用 chars() 方法將字符串轉(zhuǎn)換為 IntStream。對于每個字符,我們使用 Character.getNumericValue() 方法將其轉(zhuǎn)換為對應的數(shù)字值。最后,我們使用 sum() 方法計算所有數(shù)字的總和。
在上述示例中,字符串 "abc123def456ghi789" 中的數(shù)字為 "123"、"456" 和 "789",因此代碼將計算這些數(shù)字的總和。
通過組合使用字符串處理方法和流式操作,我們可以在較少的代碼行數(shù)中完成從字符串中提取數(shù)字并求和的操作。你可以根據(jù)自己的需求選擇適合的方法,并根據(jù)需要進行進一步的處理和調(diào)整。