dar*_*lix -4 java arraylist nullpointerexception
我目前遇到以下代码错误.
import java.util.ArrayList;
public class Catapult
{
ArrayList<Double> distance;
Catapult()
{
ArrayList<Double> distance = new ArrayList<Double>();
}
public void calcDistance(Integer[][] data)
{
int counter = 0;
for(int a = 0; a < data.length; a++)
{
double speed = data[a][0];
for(int x = 0; x < data[0].length; x++)
{
double radian = Math.toRadians(data[0][1 + x]);
double dist = (speed * speed * Math.sin(2 *radian)) / 9.8;
distance.add(dist);
}
}
}
public void print()
{
for(int x = 0; x < distance.size(); x++)
{
System.out.println(distance.get(x));
}
}
}
Run Code Online (Sandbox Code Playgroud)
import java.util.ArrayList;
public class CatapultTester
{
public static void main(String[] args)
{
Integer[][] data = {{20, 25, 30, 35, 40, 45, 50},
{25, 25, 30, 35, 40, 45, 50},
{30, 25, 30, 35, 40, 45, 50},
{35, 25, 30, 35, 40, 45, 50},
{40, 25, 30, 35, 40, 45, 50},
{45, 25, 30, 35, 40, 45, 50},
{50, 25, 30, 35, 40, 45, 50}};
Catapult range = new Catapult();
range.calcDistance(data);
range.print();
}
}
Run Code Online (Sandbox Code Playgroud)
每当我尝试运行它时,我都会得到java.lang.NullPointerException"Null".这是一个分配,要求计算具有不同速度和角度的射弹的范围,这些射弹存储在双阵列数据中.但是,错误不断出现,它不允许我添加dist到数组列表距离.
Catapult() {
ArrayList<Double> distance = new ArrayList<Double>();
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的局部变量,其名称distance会影响实例变量distance.
将该代码更改为:
Catapult() {
distance = new ArrayList<Double>();
}
Run Code Online (Sandbox Code Playgroud)
访问正确的distance变量.null如果您尝试在代码中使用它,那么它将不再存在.
是的,就像在建议的评论中一样,尝试学习如何使用调试器.这是自己找到这些错误的重要工具.
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |