Java 在main方法中更新变量?

Java 在main方法中更新变量?,java,methods,timer,main,updating,Java,Methods,Timer,Main,Updating,我正在用爪哇做一个汽车游戏。道路的速度在main方法中设置,但我需要更新速度(汽车出界并被草地减速) 这是我想要控制的int的部分,速度改变了 if(collision[12] > x) { roadSpeed = 150; System.out.println("outside"); } else { System.out.println("inside"); roadSpeed = 100; } 这里是我需要更新的主要方法

我正在用爪哇做一个汽车游戏。道路的速度在main方法中设置,但我需要更新速度(汽车出界并被草地减速)

这是我想要控制的int的部分,速度改变了

 if(collision[12] > x)        
 {
    roadSpeed = 150;
    System.out.println("outside");
 }
 else
 {
    System.out.println("inside");
    roadSpeed = 100;
 } 
这里是我需要更新的主要方法

public static void main(String[] args) 
{
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            final TestRoad road = new TestRoad();
            road.timer.setDelay(roadSpeed);
更改int后,main方法不更新计时器延迟。 我看过changelisteners,但我不想要任何按钮或滑块

如果在中声明了int,则调用它

public Boolean start = true;
    public int i;
    public int x;
    public int y;
    public int z;
    public static int roadSpeed = 100; //<<<<<<<<<<declared here      
    public int lcolPoint = 0;
    public int rcolPoint = 0;
    public int colSlot = 0;
    public int colOffset = 0;
    public int carY;
    public int[] collision;
    public int[] colBuffer;
    private BufferedImage carImg;
    private Boolean right=false;
    private Boolean left=false;
    private Boolean first=true;




    public TestRoad(){

        this.setFocusable(true);  
        addKeyListener(this);                        //THIS IS ADDING THE KEYLISTENER
        Color colors = new Color(51,102,0);            
        setBackground(colors);


        //uses setPreferredSize instead of setSize because parent component utilizes a layout manager.
        setPreferredSize(new Dimension(500, 500));

        collision = new int[500];
        colBuffer = new int[2];

        for(int i=0; i<500; i++){
                collision[i] = 0;   
        }   


        timer = new javax.swing.Timer(25, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                addPoint();
                carMove();    //<<<<< called here
                repaint();
            }
        });
public Boolean start=true;
公共国际一级;
公共int x;
公共智力;
公共INTZ;

公共静态int路速=100// Phillip,如果我们能看到你是如何调用这段代码的话,那会有很大帮助。事实上,我们看不到
roadSpeed
的声明位置,也不知道它的范围

但是,假设是这样的

class Game {
  private int roadSpeed = 200 ; // just an initial value

  public void getSpeed(int collision, int roadSpeed){
    if(collision[12] > x){
      roadSpeed = 150;
      System.out.println("outside");
    } else {
      System.out.println("inside");
      roadSpeed = 100;
    }
    return;
  }

  public static void main(String[] args){
    // do something that sets collision
    getSpeed(collision, roadSpeed);
    // and on with your code
例如,在此代码中,您认为您正在设置
roadSpeed
,但它是内部
roadSpeed
,而不是成员变量


因此,如果这没有帮助,您将不得不包括进一步的提示。

您的缩进到底是怎么回事?你真的把ifs的主体缩进比ifs本身的缩进少吗?为了方便阅读,我对缩进进行了规范化。但是如果我要重做第二个代码块,我会被诅咒。这是一个注释,不是答案。这让我很怀疑,因为你应该知道得更清楚。好吧,我刚刚得到了一个更冗长的答案,不幸的是,答案是C。现在我回去用Java说。至于怀疑,不要这么愤世嫉俗。我添加了一些代码,希望能有所帮助。很抱歉组织不善,有几个人正在处理这个问题,当我复制粘贴时,一些格式被弄乱了。好吧,这是一个开始。您确定正在调用actionPerformed函数吗?如果您指的是开始时调用它的时间,则为是。问题是,当汽车经过碰撞点时,车速发生变化,它会更新车速。对我来说,它看起来像是一开始只运行一次,然后再也不会运行了。对不起,如果我有困难的话,我对这个还是很陌生的。
class Game {
  private int roadSpeed = 200 ; // just an initial value

  public void getSpeed(int collision, int roadSpeed){
    if(collision[12] > x){
      roadSpeed = 150;
      System.out.println("outside");
    } else {
      System.out.println("inside");
      roadSpeed = 100;
    }
    return;
  }

  public static void main(String[] args){
    // do something that sets collision
    getSpeed(collision, roadSpeed);
    // and on with your code