Java代码排错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java代码排错相关的知识,希望对你有一定的参考价值。

球碰壁不反弹 不知原因 关键代码如下:double Pi=3.14;double degree=Pi/3; //角度
boolean directory_x=true;//横向
boolean directory_y=true;//纵向
public void paint(Graphics g)
g.drawImage(desk,0,0,null);
g.drawImage(ball,(int)x,(int)y,null);
if(directory_x=true)
x=x+10*Math.cos(degree);

else
x=x-10*Math.cos(degree);

if(x>856-40-30)
directory_x=false;

if(x<40)
directory_x=true;

参考技术A if(directory_x=true)缺少一个=,要==。本回答被提问者和网友采纳

java的UI程序 简单 排错

这个是我从eclipse上面考下来的 我运行了没有任何输出结果 那个OK打不出来 怎么办
public class KeyEvent


/**
* @param args
*/
public static void main(String[] args)

// TODO Auto-generated method stub
new KeyFrame().Actual();




import java.awt.Color;
import java.awt.Frame;
import java.awt.event.KeyAdapter;

public class KeyFrame extends Frame

public void Actual()

setLayout(null);
setBounds(300,300,500,500);
setBackground(new Color(38,56,78));

addKeyListener(new MyKeyMonitor());
setVisible(true);

class MyKeyMonitor extends KeyAdapter

public void keyPressed(KeyEvent e)

System.out.println("OK!");




谢谢啊

问题出在KeyEvent上。请注意你的MAIN类的名字叫KeyEvent,而MyKeyMonitor类重写的方法keyPressed的入参的类型也是KeyEvent(这个KeyEvent应该是java.awt.event包下的),也就是说,当你的MAIN类和MyKeyMonitor在同一包内时,当触发keyPressed事件时,JAVA会自动去生成你MAIN类的实体,不会去生成java.awt.event包下的正确的KeyEvent实体,所以,你的程序才不能正确的捕获产生的键盘事件。
解决的方法有两个,一个是改变你MAIN类的名字,二是指明MyKeyMonitor类keyPressed方法入参的明确包,即写成public void keyPressed(java.awt.event.KeyEvent e)
参考技术A /*说实话,你的程序写的有点不合理。改后是按下空格键就打印出 ok!具体情况看注释吧!我把这两个类写一个文件中了。*/
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.KeyAdapter;
/*这个类名取的也不好,跟java.awt.event.KeyEvent中的KeyEvent重名了,导致以后的麻烦。*/
public class KeyEvent
public static void main(String[] args)
new KeyFrame().Actual();



class KeyFrame extends Frame
public void Actual()
setLayout(null);
setBounds(300, 300, 500, 500);
setBackground(new Color(38, 56, 78));

addKeyListener(new MyKeyMonitor());
setVisible(true);

/*这个类继承了KeyAdapter但是你没有重写KeyAdapter的任何一个方法,
所以按下任何键都没有效果,我帮你重写了KeyAdapter的一个方法。建议你看一下帮助文档。*/
class MyKeyMonitor extends KeyAdapter
@Override
public void keyPressed(java.awt.event.KeyEvent e)
/*当按下空格键时,打印这句话,KeyEvent.VK_SPACE就不解释了。看一下帮助文档就ok了!*/
if(e.getKeyCode() == java.awt.event.KeyEvent.VK_SPACE)
System.out.println("ok!");



以上是关于Java代码排错的主要内容,如果未能解决你的问题,请参考以下文章

java线上程序排错经验2 - 线程堆栈分析

java的UI程序 简单 排错

如何利用 JConsole观察分析Java程序的运行,进行排错调优

Java程序排错定位

Java程序排错定位

java初学,请排错,谢谢