java运行时,提示需要'' class '' 或'' interface ‘’

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java运行时,提示需要'' class '' 或'' interface ‘’相关的知识,希望对你有一定的参考价值。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.EventListener;

public class tank extends JApplet

public static void main(String s[])

JFrame frame=new JFrame();
frame.setTitle("tank");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new tank();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);


public void init()

JPanel panel = new tankPanel();
getContentPane().add(panel);



class tankPanel extends JPanel implements Runnable

public tankPanel()
setPreferredSize(new Dimension(640,480));
setBackground(Color.white);
Thread thread = new Thread(this);
thread.start();


//重写组件绘制方法
public void paintComponent(Graphics g)


//坦克初始位置
int x = 280, y = 280 ;
int tankbullet = 8 ;//坦克的子弹速度
//子弹
int dx = 295 , dy = 295 ;
int dx1 = 295 , dy1 = -10 ;
int dx2 = 600 , dy2 = 295 ;
int dx3 = 295 , dy3 = 600 ;
int dx4 = -10 , dy4 = 295 ;
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
this.setBackground(Color.WHITE) ;
g.setColor(Color.red) ;
g.fillRect(280 , 280 , 40 , 40) ;
g.fillOval(275 , 275 , 10 , 10) ;
g.fillOval(275 , 285 , 10 , 10) ;
g.fillOval(275 , 295 , 10 , 10) ;
g.fillOval(275 , 305 , 10 , 10) ;
g.fillOval(275 , 315 , 10 , 10) ;
g.fillOval(315 , 275 , 10 , 10) ;
g.fillOval(315 , 285 , 10 , 10) ;
g.fillOval(315 , 295 , 10 , 10) ;
g.fillOval(315 , 305 , 10 , 10) ;
g.fillOval(315 , 315 , 10 , 10) ;
g.setColor(Color.black) ;
g.fillRect(295 , 260 , 10 , 40) ;
g.fillOval(285 , 310 , 10 , 10) ;
g.fillOval(305 , 310 , 10 , 10) ;


public void run()

for (int a = 0; a<60000; a++)
dy1 = dy1 - tankbullet ;
dx2 = dx2 + tankbullet ;
dy3 = dy3 + tankbullet ;
dx4 = dx4 - tankbullet ;





程序现在没问题了,编译没问题,但是运行的时候,什么也看不见了,是怎么回事?

首先你最后多了大括号,当JVM解析到倒数第二个大括号后就认为已经是最后了,而又多了个大括号,那就需要class或interface了。

再一个就是dy1、 dx2、dy3、dx4 、tankbullet都是局部变量,在run方法中是看不到的,这里也是错误 

需要将

 int tankbullet = 8 ;//坦克的子弹速度

     //子弹 

     int dx = 295 , dy = 295 ; 

     int dx1 = 295 , dy1 = -10 ;  

     int dx2 = 600 , dy2 = 295 ;  

     int dx3 = 295 , dy3 = 600 ;  

     int dx4 = -10 , dy4 = 295 ;

这一段放到

class tankPanel extends JPanel implements  Runnable

这个后面 

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.awt.geom.*;

import java.util.EventListener; 

public class tank extends JApplet

 public static void main(String s[])

 

  JFrame frame=new JFrame();

  frame.setTitle("tank");

  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  JApplet applet = new tank();

  applet.init();

  frame.getContentPane().add(applet);

  frame.pack();

  frame.setVisible(true);

 

    public void init()

  

     JPanel panel = new tankPanel();

     getContentPane().add(panel);

   

class tankPanel extends JPanel implements  Runnable

 

 int tankbullet = 8 ;// 坦克的子弹速度

    // 子弹

    int dx = 295 , dy = 295 ; 

    int dx1 = 295 , dy1 = -10 ;  

    int dx2 = 600 , dy2 = 295 ;  

    int dx3 = 295 , dy3 = 600 ;  

    int dx4 = -10 , dy4 = 295 ;

         public tankPanel()

         setPreferredSize(new Dimension(640,480));

          setBackground(Color.white);

          Thread thread = new Thread(this);

          thread.start();

         

         

       // 重写组件绘制方法

  public void paintComponent(Graphics g) 

        

        // 坦克初始位置

        int x = 280, y = 280 ;

        

        super.paintComponent(g);

        Graphics2D g2 = (Graphics2D)g;  

        this.setBackground(Color.WHITE) ; 

        g.setColor(Color.red) ; 

        g.fillRect(280 , 280 , 40 , 40) ; 

        g.fillOval(275 , 275 , 10 , 10) ; 

        g.fillOval(275 , 285 , 10 , 10) ; 

        g.fillOval(275 , 295 , 10 , 10) ; 

        g.fillOval(275 , 305 , 10 , 10) ; 

        g.fillOval(275 , 315 , 10 , 10) ; 

        g.fillOval(315 , 275 , 10 , 10) ; 

        g.fillOval(315 , 285 , 10 , 10) ; 

        g.fillOval(315 , 295 , 10 , 10) ; 

        g.fillOval(315 , 305 , 10 , 10) ; 

        g.fillOval(315 , 315 , 10 , 10) ; 

        g.setColor(Color.black) ; 

        g.fillRect(295 , 260 , 10 , 40) ; 

        g.fillOval(285 , 310 , 10 , 10) ; 

        g.fillOval(305 , 310 , 10 , 10) ; 

        

     public void run()  

        for (int a = 0; a<60000; a++) 

         

         dy1 = dy1 - tankbullet ; 

         dx2 = dx2 + tankbullet ; 

         dy3 = dy3 + tankbullet ; 

         dx4 = dx4 - tankbullet ;  

 

      

运行后界面是

至于为什么没出现子弹,是因为你在run方法中修改了

         

         dy1 = dy1 - tankbullet ; 

         dx2 = dx2 + tankbullet ; 

         dy3 = dy3 + tankbullet ; 

         dx4 = dx4 - tankbullet ; 

这几个值,而并没有利用这几个值进行重新绘制子弹,所以导致无法出现子弹

参考技术A 给你看过了, 最后一行的括号去掉一个就可以了
还有个小提示, 类名应该首字母大写, 谢谢
参考技术B //坦克初始位置
int x = 280, y = 280 ;
int tankbullet = 8 ;//坦克的子弹速度
//子弹
int dx = 295 , dy = 295 ;
int dx1 = 295 , dy1 = -10 ;
int dx2 = 600 , dy2 = 295 ;
int dx3 = 295 , dy3 = 600 ;
int dx4 = -10 , dy4 = 295 ;
这段代码应该移到class tankPanel extends JPanel implements Runnable下面全局变量】、
最后一行的去掉
参考技术C

你这个程序写的有问题,下面这段变量会提示报错

dy1 = dy1 - tankbullet ; 

dx2 = dx2 + tankbullet ; 

 dy3 = dy3 + tankbullet ; 

 dx4 = dx4 - tankbullet ;

我帮你稍微改了下:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.awt.geom.*;

import java.util.EventListener; 

public class tank extends JApplet

  public static void main(String s[])

   JFrame frame=new JFrame();

   frame.setTitle("tank");

   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   JApplet applet = new tank();

   applet.init();

   frame.getContentPane().add(applet);

   frame.pack();

   frame.setVisible(true);

  

    public void init()

     JPanel panel = new tankPanel();

     getContentPane().add(panel);

    

class tankPanel extends JPanel implements  Runnable

 

  int x = 280, y = 280 ;

     int tankbullet = 8 ;//坦克的子弹速度

     //子弹 

     int dx = 295 , dy = 295 ; 

     int dx1 = 295 , dy1 = -10 ;  

     int dx2 = 600 , dy2 = 295 ;  

     int dx3 = 295 , dy3 = 600 ;  

     int dx4 = -10 , dy4 = 295 ;

         public tankPanel()

           setPreferredSize(new Dimension(640,480));

           setBackground(Color.white);

           Thread thread = new Thread(this);

           thread.start();

         

         

       //重写组件绘制方法

         public void paintComponent(Graphics g) 

        //坦克初始位置

        

         super.paintComponent(g);

         Graphics2D g2 = (Graphics2D)g;  

         this.setBackground(Color.WHITE) ; 

         g.setColor(Color.red) ; 

         g.fillRect(280 , 280 , 40 , 40) ; 

         g.fillOval(275 , 275 , 10 , 10) ; 

         g.fillOval(275 , 285 , 10 , 10) ; 

         g.fillOval(275 , 295 , 10 , 10) ; 

         g.fillOval(275 , 305 , 10 , 10) ; 

         g.fillOval(275 , 315 , 10 , 10) ; 

         g.fillOval(315 , 275 , 10 , 10) ; 

         g.fillOval(315 , 285 , 10 , 10) ; 

         g.fillOval(315 , 295 , 10 , 10) ; 

         g.fillOval(315 , 305 , 10 , 10) ; 

         g.fillOval(315 , 315 , 10 , 10) ; 

         g.setColor(Color.black) ; 

         g.fillRect(295 , 260 , 10 , 40) ; 

         g.fillOval(285 , 310 , 10 , 10) ; 

         g.fillOval(305 , 310 , 10 , 10) ; 

        

       public void run()  

        for (int a = 0; a<60000; a++)  

         dy1 = dy1 - tankbullet ; 

         dx2 = dx2 + tankbullet ; 

         dy3 = dy3 + tankbullet ; 

         dx4 = dx4 - tankbullet ; 

          

       

至于你这样的问题我没有遇到哦,看下图:

本回答被提问者采纳

LInux javac时, 提示command not found

这个是我之前看了很多的论坛发现的问题,我想了很久也没有发现问题,明明路径都是对的,配置文件也没有错误,为什么最后却只有执行java好使,但是执行javac不好使

因为java分两个版本一个是jre,一个是jdk,就是jre的版本是带,运行环境的,而linux系统不需要这个运行环境,如果你是在linux系统上装这个java ,那么选择使用jdk的版本就行了。

最好装jdk1.6版本比较稳定,其他的版本还是有其他的错误,具体装法请看我的linux配置jdk。

以上是关于java运行时,提示需要'' class '' 或'' interface ‘’的主要内容,如果未能解决你的问题,请参考以下文章

用VC编程出现好多错误,说是执行CL.EXE时出错

连接mysql时提示java.sql.SQLException: Access denied for user 'root'@'DESKTOP-N2B2D9A' (us

在命令提示符窗口里输入javac有反应,但是输入java不能运行?

配置好环境变量以后再cmd窗口可以执行,但是在java里面执行报错,提示:'imp' 不是内部或外部命令?

spring jpa使用@service注解时失效提示No bean named 'countryService' is defined

2019-08-18 Pycharm的运行错误can't find '__main__' module