如何为数组赋值

时间:2016-03-09 18:55:24

标签: java arrays

我正在接受输入,我希望它打印出阵列中的所有数字,但由于某种原因,数组只保存输入的最后一个数字。输入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));

3 个答案:

答案 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()函数,以确保删除所有尾随空格。