我有3个类:主要游戏,ufoMovement(实际上是一个线程)和ufo本身(是的,在图片中是德语,但他们只是名字)。UfoMovement创建了一个Ufo,它有一个叫做“爆炸”的方法,其中组件会飞离。主游戏开始线程UFOMovement。这个游戏是一个小行星躲避游戏,你的ufo正在飞行,你必须躲避小行星,这意味着我必须从main类调用方法:Explomde,因为那个类检查碰撞,但是当我调用main类中的方法时,我得到一个javalang Nullpointer exepction,但是当我从UFOMovement调用它时,这个方法有效。是我做错了什么还是我错过了什么。ps:我才15岁,也刚接触堆栈溢出,所以请不要对我评头论足:)我也不知道为什么堆栈溢出关闭了我的问题,我给了很多细节堆栈跟踪:
Exception in thread "Thread-9" Exception in thread "Thread-1" java.lang.NullPointerException
at GLOOP.Sys.warte(Sys.java:111)
at GLOOP.Sys.warte(Sys.java:94)
at UfoBewegung.tastaturSteuerung(UfoBewegung.java:33)
at UfoBewegung.run(UfoBewegung.java:14)
java.lang.NullPointerException
at GLOOP.Sys.warte(Sys.java:111)
at GLOOP.Sys.warte(Sys.java:94)
at Asteroid.bewegeDich(Asteroid.java:18)
at ThreadAsteroid.run(ThreadAsteroid.java:20)
Bluej截图
main class:
import GLOOP.*;
public class UfoSpiel
{
private GLKamera kamera;
private GLLicht licht;
private GLBoden weltall;
ThreadAsteroid asteroid = new ThreadAsteroid();
ThreadAsteroid2 asteroid2 = new ThreadAsteroid2();
ThreadAsteroid3 asteroid3 = new ThreadAsteroid3();
ThreadAsteroid4 asteroid4 = new ThreadAsteroid4();
ThreadAsteroid5 asteroid5 = new ThreadAsteroid5();
ThreadAsteroid6 asteroid6 = new ThreadAsteroid6();
ThreadAsteroid7 asteroid7 = new ThreadAsteroid7();
ThreadAsteroid8 asteroid8 = new ThreadAsteroid8();
UfoBewegung ufoBewegung = new UfoBewegung();
public UfoSpiel()
{
weltall = new GLBoden("Weltall.jpg");
kamera = new GLKamera();
kamera.setzePosition(2000,2001,20);
kamera.setzeBlickpunkt(2000,0,0);
licht = new GLLicht();
asteroid.start();
asteroid2.start();
asteroid3.start();
asteroid4.start();
asteroid5.start();
asteroid6.start();
asteroid7.start();
asteroid8.start();
ufoBewegung.start();
System.out.println("Start!");
// for(int i = 1; i>0; i++)
// {
// System.out.println(Math.sqrt(Math.pow(asteroid.gibXasteroid-ufoBewegung.gibXufo,2)+Math.pow(asteroid.gibZasteroid-ufoBewegung.gibZufo,2)));
// if(Math.sqrt(Math.pow(asteroid.gibXasteroid-ufoBewegung.gibXufo,2)+Math.pow(asteroid.gibZasteroid-ufoBewegung.gibZufo,2)) <= 1000)
// {
// System.out.println("Destroyed");
// ufoBewegung.explodieredasUfo();
// }
// }
for(int i = 1; i>0; i++)
{
Kollision();
}
}
public void Kollision()
{
if(Math.sqrt(Math.pow(asteroid.gibXasteroid-ufoBewegung.gibXufo,2)+Math.pow(asteroid.gibZasteroid-ufoBewegung.gibZufo,2)) == 100)
{
ufoBewegung.ufo.explodiere();
System.out.println("Destroyed");
Sys.warte();
}
else if(Math.sqrt(Math.pow(asteroid2.gibXasteroid-ufoBewegung.gibXufo,2)+Math.pow(asteroid2.gibZasteroid-ufoBewegung.gibZufo,2))== 100)
{
ufoBewegung.ufo.explodiere();
System.out.println("Destroyed");
}
else if(Math.sqrt(Math.pow(asteroid3.gibXasteroid-ufoBewegung.gibXufo,2)+Math.pow(asteroid3.gibZasteroid-ufoBewegung.gibZufo,2))== 100)
{
ufoBewegung.ufo.explodiere();
System.out.println("Destroyed");
}
else if(Math.sqrt(Math.pow(asteroid4.gibXasteroid-ufoBewegung.gibXufo,2)+Math.pow(asteroid4.gibZasteroid-ufoBewegung.gibZufo,2))== 100)
{
ufoBewegung.ufo.explodiere();
System.out.println("Destroyed");
}
else if(Math.sqrt(Math.pow(asteroid5.gibXasteroid-ufoBewegung.gibXufo,2)+Math.pow(asteroid5.gibZasteroid-ufoBewegung.gibZufo,2))== 100)
{
ufoBewegung.ufo.explodiere();
System.out.println("Destroyed");
}
else if(Math.sqrt(Math.pow(asteroid6.gibXasteroid-ufoBewegung.gibXufo,2)+Math.pow(asteroid6.gibZasteroid-ufoBewegung.gibZufo,2))== 100)
{
ufoBewegung.ufo.explodiere();
System.out.println("Destroyed");
}
else if(Math.sqrt(Math.pow(asteroid7.gibXasteroid-ufoBewegung.gibXufo,2)+Math.pow(asteroid7.gibZasteroid-ufoBewegung.gibZufo,2))== 100)
{
ufoBewegung.ufo.explodiere();
System.out.println("Destroyed");
}
else if(Math.sqrt(Math.pow(asteroid8.gibXasteroid-ufoBewegung.gibXufo,2)+Math.pow(asteroid8.gibZasteroid-ufoBewegung.gibZufo,2))== 100)
{
ufoBewegung.ufo.explodiere();
System.out.println("Destroyed");
}
}
}
Ufomovement:
import GLOOP.*;
public class UfoBewegung extends Thread
{
public GLTastatur tastatur;
public Ufo ufo;
double gibXufo;
double gibZufo;
public void run()
{
tastatur = new GLTastatur();
ufo = new Ufo(2000,75,0);
ufo.explodiere();
tastaturSteuerung();
}
public void tastaturSteuerung(){
//Tastatursteuerung wird hiermit ermöglicht.
while(!tastatur.istGedrueckt('^')){
if(tastatur.rechts()){
ufo.bewegeRechts();
}
if(tastatur.links()){
ufo.bewegeLinks();
}
if(tastatur.unten()){
ufo.bewegeUnten();
}
if(tastatur.oben()){
ufo.bewegeOben();
}
gibXufo = ufo.gibX();
gibZufo = ufo.gibZ();
Sys.warte();
}
}
public void explodieredasUfo()
{
ufo.explodiere();
}
}
Ufo类:
import GLOOP.*;
public class Ufo
{
GLKugel cockpit;
GLTorus rumpf;
GLZylinder boden;
GLKegel fluegel1;
GLKegel fluegel2;
public Ufo(int x,int y,int z)
{
rumpf = new GLTorus(x,y,z,60,15);
boden = new GLZylinder(x,y,z,70,5);
cockpit = new GLKugel(x,y,z,50);
fluegel1 = new GLKegel(x-90,y,z+70,25,80);
fluegel2 = new GLKegel(x+90,y,z+70,25,80);
cockpit.setzeSelbstleuchten(1,0.1,0);
rumpf.drehe(90,0,0);
rumpf.skaliere(1,2,1);
rumpf.setzeFarbe(0.1,0.1,0.1);
boden.drehe(90,0,0);
boden.skaliere(1,2,1);
boden.setzeFarbe(1,0.3,0);
fluegel1.drehe(0,90,15);
fluegel1.skaliere(0.5,0.7,1);
fluegel1.rotiere(-90,1,0,0,0,0,0);
fluegel1.setzeFarbe(1,0,0);
fluegel1.setzeSelbstleuchten(1,0.1,0);
fluegel2.drehe(0,-90,-15);
fluegel2.skaliere(0.5,0.7,1);
fluegel2.rotiere(-90,1,0,0,0,0,0);
fluegel2.setzeFarbe(1,0,0);
fluegel2.setzeSelbstleuchten(1,0.1,0);
}
public void explodiere()
{
cockpit.verschiebe(1,0.1,-1);
rumpf.verschiebe(-1,-0.2,2);
boden.verschiebe(0.5,0,-2);
fluegel1.verschiebe(-1,2,0.2);
fluegel2.verschiebe(1,-1,-0.3);
for(int i = 0; i<=5000; i++)
{
cockpit.verschiebe(1,0.1,-1);
rumpf.verschiebe(-1,-0.2,2);
rumpf.drehe(2,4,1);
boden.verschiebe(0.5,0,-2);
boden.drehe(0.1,1,0.5);
fluegel1.verschiebe(-1,2,0.2);
fluegel1.drehe(0,2,1);
fluegel2.verschiebe(1,-1,-0.3);
fluegel2.drehe(0,2,1);
Sys.warte(10);
}
}
public double gibX()
{
return(cockpit.gibX());
}
public double gibZ()
{
return(cockpit.gibZ());
}
public void bewegeRechts()
{
cockpit.verschiebe(2,0,0);
rumpf.verschiebe(2,0,0);
boden.verschiebe(2,0,0);
fluegel1.verschiebe(2,0,0);
fluegel2.verschiebe(2,0,0);
}
public void bewegeLinks()
{
cockpit.verschiebe(-2,0,0);
rumpf.verschiebe(-2,0,0);
boden.verschiebe(-2,0,0);
fluegel1.verschiebe(-2,0,0);
fluegel2.verschiebe(-2,0,0);
}
public void bewegeUnten()
{
cockpit.verschiebe(0,0,2);
rumpf.verschiebe(0,0,2);
boden.verschiebe(0,0,2);
fluegel1.verschiebe(0,0,2);
fluegel2.verschiebe(0,0,2);
}
public void bewegeOben()
{
cockpit.verschiebe(0,0,-2);
rumpf.verschiebe(0,0,-2);
boden.verschiebe(0,0,-2);
fluegel1.verschiebe(0,0,-2);
fluegel2.verschiebe(0,0,-2);
}
}
您经常会看到具有静态或公共属性和方法的Java程序。
在上面的示例中,我们创建了一个静态方法,这意味着它可以在不创建类的对象的情况下访问,而不像public,它只能由对象访问:
示例演示静态方法和公共方法之间差异的示例:
public class Main {
// Static method
static void myStaticMethod() {
System.out.println("Static methods can be called without creating objects");
}
// Public method
public void myPublicMethod() {
System.out.println("Public methods must be called by creating objects");
}
// Main method
public static void main(String[] args) {
myStaticMethod(); // Call the static method
// myPublicMethod(); This would compile an error
Main myObj = new Main(); // Create an object of Main
myObj.myPublicMethod(); // Call the public method on the object
}
}
编辑问题,以包括预期行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答问题。 为什么以下代码不能保证多个线程之间total_home数量的唯一性,即使逻辑位于同步块中也是如此。 } } } 这是一个程序示例。试着运行5-10次,你会发现total_home的值每次都不唯一。
我在调用我的onLeScan时遇到问题。我在开始扫描中放置了一个标签,每次都会被调用。出于某种原因,我的onLeScan永远不会被调用。有人看到我所做的有问题吗?onLeScan应该在开始扫描后立即调用,对吗? 编辑更改了我的onLeScan函数。仍然不起作用,但我认为我正在走向正确的道路。DeviceBeacon是一个只包含方法的类:getName()、getSignal()和getAddres
1、接口声明 如果您希望在自己的CRM系统嵌入呼叫中心能力,需要对接智齿呼叫中心能力,在对接前请您阅读如下对接流程,以便您更好的完成对接。如果只对接基本呼叫能力,预计对接及调试过程1周左右即可完成。 第一步:获取第三方用户接口调用唯一凭证 请联系您的售后经理,获取您企业的如下信息: 1、companyid(企业id) 2、appid(第三方用户接口调用唯一凭证id) 3、app_key(第三方用户
这里是Twilio的新手,并寻求twilio专家的建议。我正在尝试拨打IVR系统的出站电话,等待几秒钟并发送键盘号码输入以在另一端启动工作流程 到目前为止,我可以呼叫IVR系统,但我如何发送号码输入?我认为TwiML是实现这一点的方法!非常感谢您的帮助
我是RXJava的新手。在一个场景中,我希望调用第一个登录webservice(),如果成功,则希望调用另一个webservice()以获取用户信息。
不幸的是,这种情况在生产中偶尔发生,但我无法可靠地复制。 gRPC服务器向少数客户端发送小而频繁的更新。每个客户端使用不同的参数对同一个调用发出多个请求。永远不会有来自服务器的数据流。 调用onNext时,出现以下错误: 根据gRPC订阅数据的请求,保留观察员名单。多个客户端可能会请求完全相同的更新,因此每个进入的客户端都会被添加到相应数据的列表中。 如果他们取消,他们将通过以下方式从列表中删除: