为什么这不起作用?
我正在尝试创建一个名为double
的{{1}}类型的数组。然后解析一些文本,寻找关键字"范围:",然后添加文本中接下来的两个双打。我的问题是当我尝试返回这个数组时。
s
编辑:
我得到的错误是"此方法必须返回double []"
我感动了#34;返回s;"到底并改变了我的指数,但我仍然得到这个错误。
你可以使用stripped ="范围:28.65 - 63.72&#34 ;;作为我试图解析的一个例子。
答案 0 :(得分:2)
让return s
成为最后一句话
public double[] getDaysRange() {
double[] s = new double[2];
Scanner parse = new Scanner(stripped);
while (parse.hasNext()) {
if (parse.next().equals("Range:")) {
while (!parse.hasNextDouble()) {
parse.next();
}
s[0] = parse.nextDouble();
while (!parse.hasNextDouble()) {
parse.next();
}
s[1] = parse.nextDouble();
// return s; // Not here...
}
}
return s; // Here
}
这将确保......
您现在遇到的问题是提前了解您可能需要阅读多少元素......
如果您只对前两个值感兴趣,可以打破循环
//...
s[1] = parse.nextDouble();
// return s; // Not here...
break;
这将使你离开循环并处理它之后发生的事情(namly return
语句。)
如果您对所有可能的值感兴趣,则需要使用java.util.List
或使用预期值的数量预先设定文件的种子,或者将预期数量的值传递给方法...
答案 1 :(得分:2)
您可以,但您的方法应该通过方法的所有逻辑出口返回double
数组。所以你需要
return s;
在你的顶级while循环之外。