我想写一个java程序来返回参数String中找到的所有整数的总和。 例如,取一个字符串:“12喜欢8和9” 现在答案是12 + 8 + 9 = 29。 但我真的不知道甚至如何开始可以帮助这个!
答案 0 :(得分:5)
您可以从string
替换所有非数字开始space
,spilt
根据space
String str = "12 hi when 8 and 9";
str=str.replaceAll("[\\D]+"," ");
String[] numbers=str.split(" ");
int sum = 0;
for(int i=0;i<numbers.length;i++){
try{
sum+=Integer.parseInt(numbers[i]);
}
catch( Exception e ) {
//Just in case, the element in the array is not parse-able into Integer, Ignore it
}
}
System.out.println("The sum is:"+sum);
答案 1 :(得分:0)
您应使用扫描仪阅读字符串
Scanner s = new Scanner(your string);
然后使用
阅读 s.nextInt();
然后添加这些整数。
答案 2 :(得分:0)
以下是一般算法:
这是一个编码示例:
int sumString(String input)
{
int output = 0;
for (String token : input.split(" "))
{
try
{
output += Integer.parseInt(token);
}
catch (Exception error)
{
}
}
return output;
}
答案 3 :(得分:0)
private static int getSumOfIntegersInString(String string) {
/*Split the String*/
String[] stringArray = string.split(" ");
int sum=0;
int temp=0;
for(int i=0;i<stringArray.length;i++){
try{
/*Convert the numbers in string to int*/
temp = Integer.parseInt(stringArray[i]);
sum += temp;
}catch(Exception e){
/*ignore*/
}
}
return sum;
}
答案 4 :(得分:0)
您可以使用正则表达式
Pattern p = Pattern.compile("\\d+");
String s = " 12 hi when 8 and 9" ;
Matcher m = p.matcher(s);
int start = 0;
int sum=0;
while(m.find(start)) {
String n = m.group();
sum += Integer.parseInt(n);
start = m.end();
}
System.out.println(sum);
这种方法不要求用空格分隔项目,这样就可以使用&#34; 12hiwhen8and9&#34;。
答案 5 :(得分:0)
假设您的单词由空格分隔:
然后将输入字符串拆分为“标记”(不带空格的连续字符)。 然后循环它们,尝试将它们转换为整数,如果抛出异常,则表示此标记不表示整数。
代码:
public static int summary(String s) {
String[] tokens = s.split("\\s+");
int sum = 0;
for(String token : tokens) {
try {
int val = Integer.parseInt(token);
sum += val;
}
catch(NumberFormatException ne){
// Do nothing
}
}
return sum;
}
答案 6 :(得分:0)
String s ="12 hi when 8 and 9";
s=s.replaceAll("[^0-9]+", " ");
String[] numbersArray= s.split(" ");
Integer sum = 0;
for(int i = 0 ; i<numbersArray.length;i++){
if(numbersArray[i].trim().length() != 0){
Integer value = Integer.valueOf(numbersArray[i].trim());
sum = sum + value;
}
}
System.out.println(sum);
答案 7 :(得分:0)
您可以查看以下代码: -
public class Class02
{
public static void main(String[] args)
{
String str = "12 hi when 8 and 9";
int sum = 0;
List<String> list = new ArrayList<String>();
StringTokenizer st = new StringTokenizer(str.toLowerCase());
while(st.hasMoreElements())
{
list.add(st.nextToken());
}
for(int i =0; i< list.size();i++)
{
char [] array = list.get(i).toCharArray();
int num = array[0];
if(!(num >= 'a' && num <= 'z'))
{
int number = Integer.valueOf((list.get(i).toString()));
sum = sum + number;
}
}
System.out.println(sum);
}
}
希望它会对你有所帮助。
答案 8 :(得分:0)
我知道这没有Java8标签,但我会把它放在那里以防有人发现它有趣
String str = "12 hi when 8 and 9";
System.out.println(Arrays.stream(str.split(" "))
.filter(s -> s.matches("[0-9]+")).mapToInt(Integer::parseInt).sum());
很好地打印出29