2017-11-25 7 views
-6

Javaは、中括弧を入れなければならないときと、それを正しく置いていないときを決定しますか? ロボットゲームに関するプロジェクトをコンパイルしていますが、中括弧の順序を変更すると、正しい方法で記述されていてもエラーになります。私は、コードの二つの異なる種類のだけ正しいものとコードを挿入:この正しい方法で中カッコを入れると、Javaがエラーになるのはなぜですか?

1)

public class Robot { 
    //In Java, Class Variables should be private so that only its methods can change them. 
    private int centerX=100; 
    private int centerY=382; 
    private boolean jumped=false; 

    private int speedX=0; 
    private int speedY=1; 

    public void update(){ 

     //Moves Character or Scrolls Background accordingly. 
     if(speedX<0) 
      centerX+=speedX; 
     else if(speedX==0) 
      System.out.println("Do not scroll the background."); 


    }  
    // Updates Y Position 
    if(centerY + speedY >=382) 
     centerY=382; 
    else 
     centerY+=speedY; 
    //Handles Jumping 
    if (jumped==true) 
     speedY+=1; 
     if(centerY+speedY>=382){ 
      centerY=382; 
      speedY=0; 
      jumped=false; 
     } 
} 

2)

public class Robot { 
    //In Java, Class Variables should be private so that only its methods can change them. 
    private int centerX=100; 
    private int centerY=382; 
    private boolean jumped=false; 

    private int speedX=0; 
    private int speedY=1; 

    public void update(){ 

     //Moves Character or Scrolls Background accordingly. 
     if(speedX<0) 
      centerX+=speedX; 
     else if(speedX==0) 
      System.out.println("Do not scroll the background."); 



    // Updates Y Position 
    if(centerY + speedY >=382) 
     centerY=382; 
    else 
     centerY+=speedY; 
    //Handles Jumping 
    if (jumped==true) 
     speedY+=1; 
     if(centerY+speedY>=382){ 
      centerY=382; 
      speedY=0; 
      jumped=false; 
     } 
} 
} 

だから(方法アップデートのすべてのそのコードを置きます)エラーはありませんが、// Updates Y Positionからすべての派生を除外すると、コンパイラはエラーを発見しました。しかし、技術的に正しいエラーはないはずですか?

EDIT 最初のコードは、エラーを与える: Syntax error, insert "}" to complete ClassBody

+0

どのようなエラーが表示されますか? – Pshemo

+0

はい、クラス内に非宣言文を置くと、エラーが発生します。メソッドの中にないときに 'if(centerY + speedY> = 382)...'を実行するのはいつですか? – Dukeling

+0

エラーを表示するスクリーンショットを追加しました – Pierfrank

答えて

0

実行得るために、任意のコードのために - それは、メソッド内である必要があります!コードがメソッドや他のコードブロックの中になければ、いつ実行されますか? クラスは実行されませんクラス内にあるメソッド、ブロックコンストラクタなどのみが実行されます。クラスの唯一の目的は、メソッド、ブロックなどのさまざまな実行可能ブロックの宣言です。 For more info you can visit this page

+0

最後に徹底的な答えです。メソッド外のすべての命令は関係がないため、IDEはエラーとみなします。ありがとう。 – Pierfrank

+0

これはIDEではなくJavaエラーです。それは正しく意味します。 – Neo

+0

私はJavaが話していないことを意味します。これはエラーを言うIDEです。 – Pierfrank

0

最後のif文でインデントされているため、最後のifを最後に含めるコードブロックを持つことを意味します。

0

これはメソッド内にあるコードの一部です。

public void update(){ 

     //Moves Character or Scrolls Background accordingly. 
     if(speedX<0) 
      centerX+=speedX; 
     else if(speedX==0) 
      System.out.println("Do not scroll the background."); 


    }  

この部分ではありません。

// Updates Y Position 
    if(centerY + speedY >=382) 
     centerY=382; 
    else 
     centerY+=speedY; 
    //Handles Jumping 
    if (jumped==true) 
     speedY+=1; 
     if(centerY+speedY>=382){ 
      centerY=382; 
      speedY=0; 
      jumped=false; 
     } 

方法およびコンストラクタの宣言 外で許可された唯一のものは、フィールドの宣言です。

Go to this link for more information.

+0

はい、その男はすでにその答えをくれましたが、とにかく感謝します。 – Pierfrank

1

クラスレベルで許可されているものは、唯一の宣言です。変数、メソッドなどの宣言のように。コードでデータを実行するすべての作業は、常にのメソッドまたはコンストラクタ内にある必要があります。 したがって、if else条件をメソッドの外側に置くと、Javaはそのコードすべてで何をすべきかを知りません。

関連する問題