打印阵列列表

时间:2015-12-04 15:29:13

标签: java arraylist printing

我需要从文本文件中读取数组列表中的值。这不起作用,请帮助我理解原因,并建议可能的解决方法。

Scanner in = new Scanner(new File("gravityVals.txt"));
ArrayList <Double> gravity = new ArrayList<Double>();
while(in.hasNextDouble())
{
  gravity.add(in.nextDouble());
}
in.close();
for (double i = 0; i < gravity.size(); i++)
{
  System.out.println(gravity[i]);
}

3 个答案:

答案 0 :(得分:0)

在for循环中,将double更改为int并使用ArrayList get()方法,即:

 for (int i = 0; i < gravity.size(); i++){

   // Specify Index value to help with your logging 
   System.out.println("Value at index " + i + " is " + gravity.get(i));

 }

答案 1 :(得分:0)

这是@Petter Friberg评论的扩展。 你需要使你的循环计数器(i)成为int,而不是double。此外,由于gravity是ArrayList而不是数组,因此您需要使用方法get来访问ArrayList中的每个元素。

//There isn't an antiforgerttoken on this page but there is one in the _~\shared\layout so it picks that up
params["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
//Set the generic params
params["categoryId"] = catId;
params["denom"] = thisdenom;
params["bAvailableOnly"] = bAvail;

if (bIsBatch) {
    url = "@Url.Action("VoidStockBatch", "Stock")";
    params["stockBatchId"] = itemId;          
} else {
    url = "@Url.Action("VoidStockItem", "Stock")";
    params["stockId"] = itemId;
}

$.ajax({
    url: url,
    type: 'POST',
    cache: false,
    data: params,
    success: ...........

答案 2 :(得分:0)

这里的代码存在许多问题,导致它甚至无法编译。

  1. 您无法使用[]运算符访问重力元素。你需要做gravity.get(i)。
  2. 我需要是一个int而不是一个双。
  3. 否则您编写的代码将被编译。它是否会按预期工作取决于gravityVals.txt的格式。如果没有为Scanner指定分隔符,它将使用默认值,即默认空格。

    此外,只是一些通用的样式指南,假设您使用的是Java 7+。

    1. 您无需指定通用类型&#34; Double&#34;当你声明&#34;新的ArrayList()&#34;编译器将推断出类型 ArrayList<Double> gravity = new ArrayList<>()可以正常使用。

    2. 您应该使用Scanner的try-with-resources https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

    3. 使用java for-for for循环的每种语法。 http://www.mkyong.com/java8/java-8-foreach-examples/

    4. 以下情况要好得多。

      List<Double> gravity = new ArrayList<>();
      try(Scanner in = new Scanner(new File("gravityVals.txt"));) {
        while(in.hasNextDouble()) {
          gravity.add(in.nextDouble());
        }
      }
      
      for (Double val : gravity){
        System.out.println(val);
      }