Errore "L'array è solo scritto, mai letto da" visualizzato nel codice Java

Aug 25 2020

Ho cercato di ripulire un po 'di Java e sto cercando di aggiornare le basi, quindi ho lavorato sul libro java 24 ore di Sam. Uno dei progetti per familiarizzare con la descrizione degli oggetti fornisce il codice come segue:

package com.java24hours;

public class GremlinLab {
    public static void main(String[] arguments) {
        int numGremlins = Integer.parseInt(arguments[0]);
        if (numGremlins > 0) {
            Gremlin[] gremlins = new Gremlin[numGremlins];
            for (int i = 0; i < numGremlins; i++) {
                gremlins[i] = new Gremlin();
            }
            System.out.println("There are " + Gremlin.getGremlinCount()
                + " gremlins.");
        }
    }
}

L'errore "L'array è solo scritto, mai letto da" viene visualizzato al momento della compilazione nella settima riga:

Gremlin[] gremlins = new Gremlin[numGremlins];

e non riesco a capire per la vita di me perché questo non funziona! Mi scuso se sono stupido ma qualsiasi aiuto sarà molto apprezzato :) Grazie!

Scusa modifica rapida per aggiungere l'altra classe che non ho menzionato !!

Ho anche la seguente classe:

package com.java24hours;

public class Gremlin {
    static int gremlinCount = 0;

    public Gremlin() {
        gremlinCount++;
    }

    static int getGremlinCount() {
        return gremlinCount;
    }
}

Ho quindi specificato gli argomenti della riga di comando personalizzando la configurazione del progetto.

Ultima modifica !! ... Grazie mille a tutti, lo apprezzo davvero. Sto usando un IDE e ho spostato le classi nella cartella dei pacchetti sorgente invece che nel pacchetto 'com.java24hours' .... ei miei codici originali hanno funzionato bene ?! Chiaramente sono un principiante! Grazie ancora a tutti :)

Risposte

3 Code-Apprentice Aug 25 2020 at 22:15

Questo è un avvertimento, non un errore. Puoi tranquillamente ignorarlo e il tuo programma funzionerà come desideri.

L'avvertimento è perché stai creando un array e lo stai riempiendo di elementi. Ma allora non usi mai realmente l'array né gli elementi di quell'array per niente. Ad esempio, potresti farlo

System.out.println("There are " + gremlins.length + " gremlins.");

per stampare la lunghezza dell'array. Questo rimuoverà l'avviso.

Meglio ancora, se stai scrivendo questo come esercizio per apprendere staticmetodi e variabili, non usare affatto un array.

Bohemian Aug 25 2020 at 22:14

Non stai facendo nulla con gli elementi gremlinsdell'array. cioè da nessuna parte il tuo codice fa qualcosa di simile gremlins[i].someMethod(), ma è solo un avvertimento.