我正在接受输入,我希望它打印出阵列中的所有数字,但由于某种原因,数组只保存输入的最后一个数字。输入null并且每行一个数字时,代码应该停止 我的意见:
1
2 3
4
<enter>
我的输出:
[4]
我的预期输出:
[1,2,3,4]
该计划
String inputValue;
String [] input = new String[500];
while((inputValue = stdin.readLine()) != null && !inputValue.equals("")){
input = inputValue.split("\\s+");
}
System.out.println(Arrays.toString(input));
答案 0 :(得分:0)
可能的错误是你在循环的每次迭代中都分配了input = inputValue.split("\\s+");
。它导致你只会看到最后一行或最后一个字符
String inputValue;
inputCount=0;
String [] input = new String[500];
while((inputValue = stdin.readLine()) != null && !inputValue.equals("")){
String [] inputLine = inputValue.split("\\s+");
for(i =0; i<inputLine.length; i++){
input[inputCount++] = inputLine[i];
}
}
input = Arrays.copyOf(input, inputCount);
System.out.println(Arrays.toString(input));
试试这个。这可能是错误的
答案 1 :(得分:0)
您需要通过多重循环调用来收集值。你可以这样做:
a.val[id >= 2].index[0]
答案 2 :(得分:0)
import java.util.Arrays;
import java.util.Scanner;
public class Hello {
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
String inputValue = "";
String [] input = new String[500];
int count = 0;
for(int i = 0 ; i < input.length; i++){
System.out.println("Enter Value : ");
inputValue = s.nextLine();
input[i] = inputValue;
count ++;
if(inputValue.trim().isEmpty())
{
break;
}
}
String[] tmpArray = new String[count-1];
count = 0;
for(String number : input)
{
if(number != null && !number.trim().isEmpty()){
System.out.println(number);
tmpArray[count] = number;
count++;
}
}
System.out.println(Arrays.toString(tmpArray));
}
}
试过这个,一切都很好!我还添加了trim()函数,以确保删除所有尾随空格。