簡體   English   中英

在Java中解析字符串數組

[英]Parsing a string array in java

sNums = scanString.nextLine();    
String[] num = sNums.split(" ");    
for (int i = 0; i < num.length; ++i)    
{    
    numbers = new double[i+1];     
    numbers[i] = Double.valueOf(num[i]);    
}    
for(double item: numbers)    
    out.print(item + " ");

我正在嘗試將我擁有的數字字符串(在這種情況下為“ num”)更改為雙精度數組。 我很確定這應該可行,但是由於某種原因,它會將“ 0.0”存儲到每個輸入的元素(最后一個元素除外)中。 例如,如果我輸入“ 1 5 7 90 52 [enter]”,則輸出應為“ 1.0 5.0 7.0 ... etc”,但我得到的卻是“ 0.0 0.0 0.0 0.0 52.0”

您遇到的問題是您在循環中創建了一個新數組。 您應該將其取出並進行初始化。

  String[] num = sNums.split(" ");    
  double[] numbers = new double[num.length];   // The valid place for loop

  for (int i = 0; i < num.length; ++i)    
  {    
    numbers[i] = Double.valueOf(num[i]);    
  }    

  for(double item: numbers)  {
    out.print(item + " "); 
  }

每次在for循環中都要重新創建數組。 另外,您在第二個中for each都使用a而不是使用它,而是使用i 因為i從未在該范圍內聲明過,所以無法編譯。無論如何,我建議您忘記Java中的數組並使用List,它們更加方便。

    sNums = scanString.nextLine();    
    final String[] num = sNums.split(" ");    
    final List<Double> numbers = new ArrayList<Double>();
    for (final String cur: num) {    
        numbers.add(Double.valueOf(cur));
    }    
    for(final Double item: numbers) {    
        out.print(item + " "); 
    }

您很容易創建一個新數組,每次迭代循環中的大小都會增加。 您只需要創建一個新數組,然后在循環中填充其中的值。

numbers = new double[num.length];
for (int i = 0; i < num.length; ++i) {
    // numbers = new double[i+1];   // Not needed  
    numbers[i] = Double.valueOf(num[i]); 
}
  1. 您在numnumber之間混淆。

  2. 每次第一個for循環體都在創建一個新數組。 而是將其從循環主體中刪除,然后像您所做的那樣將其放置在loop語句之前。

     String[] number = sNums.split(" "); for (int i = 0; i < number.length; ++i) { // numbers = new double[i+1]; <-- commented out numbers[i] = Double.valueOf(num[i]); } 
  3. 您使用enhanced-for循環打印錯誤:

     for(double item: numbers) out.print(numbers[i] + " "); // <-- i may already have the value of number.length 

    而是直接使用item打印:

     for(double item: numbers) out.print(item + " "); 

從命令行參數使用'args'可以使用:

    List<Double> numbers = new ArrayList<Double>();
    for(String a:args){
        numbers.add(Double.valueOf(a));
    }        
    System.out.println(numbers);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM