我需要从文本文件中读取数组列表中的值。这不起作用,请帮助我理解原因,并建议可能的解决方法。
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]);
}
答案 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)
这里的代码存在许多问题,导致它甚至无法编译。
否则您编写的代码将被编译。它是否会按预期工作取决于gravityVals.txt的格式。如果没有为Scanner指定分隔符,它将使用默认值,即默认空格。
此外,只是一些通用的样式指南,假设您使用的是Java 7+。
您无需指定通用类型&#34; Double&#34;当你声明&#34;新的ArrayList()&#34;编译器将推断出类型
ArrayList<Double> gravity = new ArrayList<>()
可以正常使用。
您应该使用Scanner的try-with-resources https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
使用java for-for for循环的每种语法。 http://www.mkyong.com/java8/java-8-foreach-examples/
以下情况要好得多。
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);
}