【问题标题】:Java: assigning values to an ArrayJava:为数组赋值
【发布时间】:2014-12-17 11:30:10
【问题描述】:

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

例如:

4

13 15

20.2 33.5

24 38

30 31

等等

我有两个静态双精度数组,x 和 y。对于第一行之后的每一行,我想将集合中的第一个 double 分配给 x,将集合中的第二个 double 分配给 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 的值加一(+=)?我知道这听起来很愚蠢,但我现在被难住了。

【问题讨论】:

  • 代码中的某些内容看起来不正确。您显示filename = input.nextLine(),然后while 循环处理输入扫描器。您是否打算使用文件阅读器?或者你真的是从控制台输入读取?我只是让你知道有些事情看起来不对劲。
  • @AlvinBunk 只是从控制台输入读取 :)

标签: java arrays file input


【解决方案1】:

唯一的问题是,如何根据第一行的 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
}

【讨论】:

  • 就像一个风格说明:为了清楚起见,我通常更愿意避免在任何复杂的表达式中使用后增量。虽然这没有出错的危险,但它仍然是一个很好的规则。因此,我们两个版本之间的唯一区别。 :)
  • 我也可以使用 for 循环吗?
  • 是的,我更喜欢 for 循环,因为您提前知道#input n。
  • @MiteshPathak 所以这将为每一行添加额外的值,(如 x[1]、x[2]、x[3]、x[4] 等)
【解决方案2】:
  line.x[0] = input.nextDouble();

这会将读取的下一个值分配给数组 x 中的第一个插槽,该插槽属于一个名为 line 的对象(我假设 line 是您已实例化的对象,而 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 ++;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多