Java:为数组赋值

时间:2014-10-22 04:20:57

标签: java arrays file input

我有一个读取文件的方法。该文件的第一行有一个整数,显示有多少额外的行。之后的每一行都有一对两个双精度值(无逗号)

例如:

    4

    13 15

    20.2 33.5

    24 38

    30 31

我有两个静态双数组,x和y。对于第一行之后的每一行,我想将集合中的第一个双精度赋给x,将集合中的第二个双精度赋给y。 但是,我不是100%确定如何分配。到目前为止,这是我的代码:(请注意,该行是对另一个未显示的方法的调用)

Scanner input = new Scanner(System.in);
    System.out.println("Enter the name of the data file.");
    fileName = input.nextLine();

    while(input.hasNext())
    {
        int num = input.nextInt(); // the first line integer
        line.x[0] = input.nextDouble(); //the additional line x coordinate
        line.y[0] = input.nextDouble(); //the additional line y coordinate
    }

唯一的问题是,如何根据第一行int值为文件中的每个附加行将x和y的值从[0]增加到[1],[2],3等等'num'是,所以我不会一直覆盖[0]?

例如,在上面的例子中,'num'的值是4,因为它后面还有四行。如何根据num的值将x和y的值增加(+ =)1?我知道这听起来很愚蠢但我现在很难过。

2 个答案:

答案 0 :(得分:3)

  

唯一的问题是,如何根据第一行int值为文件中的每个附加行将x和y的值从[0]增加到[1],[2],3等等'num'是,所以我不会一直覆盖[0]?

使用计数器i

int num = input.nextInt(); // the first line integer
int i = 0;

while(input.hasNext())
{
    line.x[i] = input.nextDouble(); //the additional line x coordinate
    line.y[i++] = input.nextDouble(); //the additional line y coordinate
}

答案 1 :(得分:1)

  line.x[0] = input.nextDouble();

这会将下一个读取的值分配给属于名为line的对象的数组x中的第一个插槽(我假设该行是您已实例化的对象,并且该x是该对象的公共字段...)

您希望增加索引并使用它来处理数组:

int i = 0;
while(input.hasNext())
{
    int num = input.nextInt(); // the first line integer
    line.x[i] = input.nextDouble(); //the additional line x coordinate
    line.y[i] = input.nextDouble(); //the additional line y coordinate
    i ++;

}