2012-03-13 4 views
0

動作しませんが、それはJavaのEclipseの2次元配列は、私はJavaでの整数の配列を作成しようとしている

以下、私がやった

...何らかの理由で動作しません。 「ブロックを完了するために構文エラーが、挿入 『}』」

int[][] vLines = new int[2][2]; 

私は私の配列要素、

vLines[0][0] = (int)(1*.33); 
    vLines[0][1] = (int)(1*.33); 
    vLines[1][0] = (int)(1*.33); 
    vLines[1][1] = (int)(1*.33); 

を初期化しようとしたとき、私は私の配列要素に値を格納しようとすると、私は日食と言うのEclipseからの問題を取得するにはで私の配列initの最後の行それでも動作しない、(int)を「の..私はそれがキャストかもしれないと思った

私は私のブレースは私のプログラムで均衡と間違って何もありません知っているが...ので、私は削除しました "。 ..

私の要素をある整数(ex 1)、まだ動作しません...

私は2行に私のint配列の宣言を分割し、このように続けてみました...まだ動作しません、一つの要素を初期化する

を試してみましたしかし、それはまだ動作しませんでした...

int[][] vLines; 
vLines = new int[2][2]; 

が、私はまだ均衡に関してでエラーが出る...

私もちょうどコピーして貼り付けオンラインチュートリアルからJava 2Dアレイの例を、彼らみました私は閉じていて、Eclipseを起動し、projをきれいにしました。ノータルまで

私は何が欠けていますか?あなたはブラケットが欠落している

import javax.swing.*; 
import java.awt.*; 

public class ColoredGrid extends JPanel { 

    final int ROWS = 2; 
    final int COLS = 2; 

    int vLines[][] = new int[ROWS][COLS]; 

    vLines[0][0] = (int)(1*.33); 
    vLines[0][1] = (int)(1*.33); 
    vLines[1][0] = (int)(1*.33); 
    vLines[1][1] = (int)(1*.33); 


    public ColoredGrid() { 

    } 

    protected void paintComponent(Graphics g){ 
     super.paintComponent(g); 


    } 

} 
+0

あなたが私たちに示したコードはうまく見えるので、おそらく他の場所で構文エラーがあります。 – dlev

+0

"vLines [0] [0] =(int)(1 * .33);"クラスの本文には許可されていません。それらは初期化ブロック{}またはコンストラクタのいずれかになければなりません。 – Adam

+1

ちなみに、コードが機能するようになったので、実際には何も役に立たないことはあります。 '(int)(1 * .33)'はちょうど '0'なので、要素はとにかく初期化されます。 – dlev

答えて

3

"vLines [0] [0] =(int)(1 * .33);"クラスの本文には許可されていません。それらは初期化ブロック{}またはコンストラクタのいずれかになければなりません。

{ // init block 
    vLines[0][0] = (int)(1*.33); 
    vLines[0][1] = (int)(1*.33); 
    vLines[1][0] = (int)(1*.33); 
    vLines[1][1] = (int)(1*.33); 
} 
+0

ありがとう、私はちょうど試行錯誤でそれを実現! – user772401

+0

+1初期化ブロック部分に+1してください。 – AusCBloke

0

...ここ

は私の全体のコードファイルである...私は私の配列要素を動的に初期化する必要があるが、私は私の単純な2次元配列が何かを保持するために取得することはできませんあなたのプログラムのどこかで。それはばかげて聞こえますが、プログラムの最後に行き、最後に適切な数の括弧があることを確認してください。私はそれを保証する。

あなたの配列コードをコメントアウトし、問題が解決しないかどうかを確認してください。そうであれば、元の投稿を編集して.javaファイルの内容全体を含めるようにしてください。

+0

私は配列を削除しました。私は私のメインのftnブロックに配列を移動したときにエラーは発生しませんが、拡張クラスに配置すると、現在この配列を設定しようとしていることに気付きました... – user772401

+0

とありがとう助けて! – user772401

+0

問題ありません。機能コードを投稿したい場合は、必要に応じてそこで作業するように手助けすることができます。 また、この回答がうまくいく場合は、自分の答えのすぐ上にある上向きの矢印をクリックして投票し、その左のチェックマークをクリックして自分の答えを受け入れます。それは私に良い報酬である私の担当者を与える:) – pogo2065

1

あなたの問題は、値をvLinesに割り当てる行が、どの機能/ブロックの内部にもありません。その行はできません。代わりに、あなたのコンストラクタにそれらのラインを追加したり、あなたはその初期化が行われるように好きな場所:あなたは、コンストラクタでそのコードをしたくない場合は

public ColoredGrid() { 
    vLines[0][0] = (int)(1*.33); 
    vLines[0][1] = (int)(1*.33); 
    vLines[1][0] = (int)(1*.33); 
    vLines[1][1] = (int)(1*.33); 
} 

代替は初期化子ブロックです。ブロックを作成するには、4行の周りに{ }を追加してください。前にstatic { ... }を見たことがあるかもしれませんが、これは似ていますが、vLinesstaticではありません。初期化の詳細は、Javaチュートリアルのthis pageを参照してください。

EDIT:アダムは初期化ブロックに私を賭けました。

関連する問題