我知道这个问题在这里有很多问题,但是我做了所有这些解决方案但它仍然不起作用。由于某种原因,它只存储第一个输入
我的输入:
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 :(得分:1)
输入文件包含4行。
readline()
只读取一行
您只能阅读并处理一行。这会将所有输入处理为ArrayList
,如果您确实需要,可以稍后将其转换为数组。
List<Double> numbers = new ArrayList<>();
while( (inputValue = stdin.readLine()) != null) {
numbers.add(Double.valueOf(inputValue);
}
答案 1 :(得分: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("]");
}
}
答案 2 :(得分:0)
这是 Java 8 智能代码。
String [] input = ...
double [] numbers= Arrays.stream(input).mapToDouble(Double::valueOf).toArray();