2014-11-03 67 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

相關問題