2016-03-08 148 views
0

我知道這裏存在很多問題,但我做了所有這些解決方案,但仍然無法正常工作。出於某種原因,只存儲第一輸入將字符串數組轉換爲雙數組

我輸入:

1 
2 
3 
4 

預期輸出:

[1.0,2.0,3.0,4.0] 

實際輸出:

[1.0] 

代碼

inputValue = stdin.readLine(); //Reads input 
    String [] input = inputValue.split ("\\R"); 
    double [] numbers = new double[input.length]; 
     for(int i = 0; i < input.length; i++){ 
      numbers[i] = Double.parseDouble(input[i]);} 
+0

爲什麼你把它看作一個字符串,你可以直接讀取值作爲'double'並直接放入數組中。不需要額外的'String'變量。 –

回答

1

輸入文件包含4個獨立的行。

readline()只讀取一行

你只讀取和處理一行。這將處理所有的輸入到一個ArrayList,你可以稍後轉換爲一個數組,如果你真的需要。

List<Double> numbers = new ArrayList<>(); 
while((inputValue = stdin.readLine()) != null) { 
    numbers.add(Double.valueOf(inputValue); 
} 
+0

嗯,我讓它通過一個while循環運行,我只是認爲我的錯誤來自於這些代碼行 – swaguire

+0

您應該在IDE調試器中瀏覽兩個版本,看看它們有何不同。 –

0

readLine()將讀取,而不是整個輸入。

試試這個:

import java.io.*; 
import java.util.ArrayList; 

class Sample { 
    public static void main(String[] args) throws IOException { 
     String inputValue; 
     BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); 

     // read the input 
     ArrayList<String> inputList = new ArrayList<String>(); // Requires JRE >= 1.5 
     while((inputValue = stdin.readLine()) != null) //Reads input 
      inputList.add(inputValue); 

     // convert what is read to double 
     double [] numbers = new double[inputList.size()]; 
     for(int i = 0; i < numbers.length; i++){ 
      numbers[i] = Double.parseDouble(inputList.get(i)); 
     } 

     // print what is read 
     System.out.print("["); 
     for(int i =0; i < numbers.length; i++){ 
      if (i > 0) System.out.print(","); 
      System.out.print(numbers[i]); 
     } 
     System.out.println("]"); 
    } 
} 
0

這裏是的Java 8智能代碼。

String [] input = ... 
double [] numbers= Arrays.stream(input).mapToDouble(Double::valueOf).toArray();