2014-11-03 39 views
0

对于此程序,我将输入作为具有以下格式的字符串:名称,后跟由空格隔开的整数。系列中可以有一个或多个整数。它的输出结果是系列名称和它的总和。下面是输出应该是什么的一个例子:java程序:从用户添加整数字符串输入

Series? seriesname 1 3 5 7 11 
sum(seriesname) = 27 

我有我的代码的问题,它保留有这个线(除外)问题:

int number = Integer.parseInt(series.substring(start, space)); 

我已经很感动有点左右,但这是我现在所拥有的:

import java.util.Scanner; 

public class NamePlusAddingInts { 
    public static String series; 
    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     System.out.print("Series? "); 

     series = scan.nextLine(); 
     String name = series.substring(0, series.indexOf(' ')); 

     System.out.print("Sum(" + name + ") = " + number); 
    } 
    public static int adding() { 
     int space = series.indexOf(' '); 

     while (space != -1) { 
      int start = space + 1; 
      int number = Integer.parseInt(series.substring(start, space)); 

      number = number + number; 
      space++; 
     } 
     return number; 
    } 
} 
+4

'我的代码存在问题,它一直存在以下问题:' - 有什么问题? – August 2014-11-03 04:04:21

+0

为什么你的代码不工作?什么是错误/异常? – 2014-11-03 04:06:48

+0

“substring”的参数是开始字符,结束字符(加1)。你已经设置了一些东西,以便开始总是在结尾字符之后。这是行不通的。 – ajb 2014-11-03 04:07:26

回答

1

你超越了它。你有感兴趣的东西,你可能只是拆分在空间中的字符串,采取的第一个元素的名称,使代码更清晰之间的明确分离,可以这样考虑:

String numbers = "name 5 20 26 4 2 13"; 
    String[] splitNumbers = numbers.split(" "); 

    int sum =0; 
    String name = splitNumbers[0] 

    for(int i = 1; i < splitNumbers.length ; i++){ 
     sum += Integer.parseInt(splitNumbers[i]); 
    } 

现在只是改变了硬编码的数字对用户输入的价值和完成。如果你害怕用户输入数字以外的东西,你可以用try-catch把它包围起来检查格式异常。

+0

sum + = splitNumbers [i];这只会给一个串联的字符串。你应该将你的数字解析为int,然后执行总和 – 2014-11-03 04:38:46

+0

是的,当我编辑它时不知何故删除了这一点。谢谢:) – FruitAddict 2014-11-03 04:40:20

0

add()方法的更好实现是将长字符串分解为字符串数组。您可以调用String方法,split(" ")将字符串转换为字符串数组。

public static int adding(String input) { 
    int sum = 0; 
    String[] array = input.split(" "); 

    //starts from 1 because array[0] is the name of the series 
    for (int i = 1; i < array.length; i++) { 
     sum += Integer.parseInt(array[i]); 
    } 
    return sum; 
} 

希望这有助于!

+0

sum + = array [i];这只会给一个串联的字符串。你应该将你的数字解析为int,然后执行 – 2014-11-03 04:39:20

+0

oops意外地将这个数字忽略掉。谢谢btw! – jials 2014-11-03 06:08:24

相关问题