1

私はJavaが初めてです。学校でプログラムを作らなければならないのですが、これを実行しようとするとエラーが発生します。ArrayIndex....... : 139 行目の 0 は、2 つの * を前に置いた場所になります。私は自分でエラーを見つけるのに疲れています。私は一日中これに取り組んできました。ありがとうございました!

PS: 一部のコマンドが理解できない場合に備えて、easyIO というパッケージを使用しています。

編集:ようやく見つけましたが、小さな問題でした。しかし、いまいましいプログラムに配列で検索するものを見つけさせることはできません。

 void UtskriftArt() {
    In Utskrift = new In();
    In søkefil = new In("Fugler.txt");
    int i= 0;
    int teller = 0;
    String[][]  ArtArray = new String[teller][4];


    for(; i > 0 && !søkefil.endOfFile(); i++){
        søkefil.readLine();
        teller++;
        if(søkefil.endOfFile()){
        søkefil.close();
        }
    } 
    System.out.print("Hvilken art vil du søke opp og skriv ut obeservasjonsdata for? ");
    String ArtSøke = Utskrift.inWord().trim();
    String Art = " ";
    System.out.println("\t\t" + Art);
    for(i = 0; i <= ArtArray.length; i++){
        **if(ArtSøke == ArtArray[i][0]){
        Art = ArtArray[i][0];
        System.out.print(ArtArray[i][1]);
        System.out.print("\t" + ArtArray[i][2]);
        System.out.println("\t" + ArtArray[i][3]);
            }
4

3 に答える 3

5

あなたの配列は次のように宣言されています

int teller = 0;
String[][]  ArtArray = new String[teller][4];

最初の次元のサイズは 0 です。要素がないため、インデックス 0 の要素にアクセスすることはできません。

if(ArtSøke == ArtArray[i][0]){
                       ^ i is 0

for適切なループを使用した場合、これは発生しません

for(i = 0; i < ArtArray.length; i++){ 

状態は のみであり、 では<ないことに注意してください<=。その場合<=、配列は 0 ベースのインデックスを使用するため、常に範囲外になります。

配列に必要な実際のサイズを宣言する必要があります

teller = 1; // 1, 2, 3, more?

余談ですが、深刻な注意として、Java で文字列を比較するにはどうすればよいですか? をお読みください。

于 2013-09-25T16:00:01.883 に答える