2013-07-26 14 views
5

Perdonami per aver postato una domanda molto simile a quella che ho postato ieri sera. Ho semplificato il problema, al fine di chiedere qualcosa di più specifico:(Beginner Java) classe, interfaccia o enum attesi

sto ottenendo un errore (di classe, interfaccia o enum previsto) quando uso il seguente codice:

import java.util.*; 


ArrayList<egg> eggys = new ArrayList<egg>; 


public class EggTest{ 
    public static void main(String [] args){ 

     egg a = new egg(); 
     egg b = new egg(); 

     eggys.add(a); 
     eggys.add(b); 

     for (egg eggo :eggys){ 
      System.out.println(eggo.size); 
     } 
    } 
} 

L'uscita dal il compilatore è:

eggys.java:4: class, interface, or enum expected 
ArrayList<egg> eggys = new ArrayList<egg>; 
^ 
1 error 

Non sto facendo qualcosa di giusto. Qualcuno può aiutarmi a capire come usare ArrayList?

+0

Considerare le classi di denominazione con UpperCasedFirstLetter. È la convenzione – RiaD

+0

In termini più semplici: puoi dare a una variabile un valore iniziale come "int i = 1" all'inizio della classe prima dei metodi, ma non se usa "nuovo". Quindi "foo bar = new foo()", che deve entrare in un metodo. – DevOfZot

+0

Leggere il primo libro – MayurB

risposta

2

Java è un langauage puramente orientato agli oggetti, il che significa che qualsiasi/tutte le proprietà devono appartenere a un'entità i.e classe/interfaccia/enumerazioni. Nel tuo caso hai definito una proprietà/variabile come indicato di seguito, che non appartiene a una classe/enum/interfaccia e quindi il compilatore java si lamenta per questo.

ArrayList<egg> eggys = new ArrayList<egg>; 

Non è possibile avere questa proprietà come variabili globali in altri linguaggi di programmazione. La natura puramente orientata agli oggetti di Java non lo consente.

Anche come menzionato da "skiwi" nel commento qui sotto, si ha anche un errore di sintassi nella definizione di ArrayList. Ti manca la parentesi verso la fine. Esso dovrebbe essere corretto a:

ArrayList<egg> eggys = new ArrayList<egg>(); 
+1

Dovrebbe essere 'ArrayList eggys = new ArrayList ();' sebbene. L'OP non si è attenuto alla convenzione di denominazione e, peggio, ha commesso un errore sintattico nella declinazione. – skiwi

+0

@skiwi Sì, ho trascurato il suo errore di sintassi mentre cercavo di concentrarmi sulla comprensione del linguaggio. Comunque grazie fammi mettere in risoluzione. –

+0

Grazie a tutti, ce l'ho ora! Prenderò una risposta il prima possibile! –

6

È possibile dichiarare solo variabili all'interno di una classe o di un metodo; non come codice di primo livello.

2

A differenza di altri linguaggi come C o C++, non si può mettere le variabili o altre dichiarazioni al di fuori di una classe o di una funzione:

public class EggTest{ 
    public static void main(String [] args){ 

     egg a = new egg(); 
     egg b = new egg(); 
     List<egg> eggys = new ArrayList<egg>(); 
     eggys.add(a); 
     eggys.add(b); 

     for (egg eggo :eggys){ 
      System.out.println(eggo.size); 
     } 
    } 
} 

In questo caso, una variabile locale si presenta come una scelta migliore.

0

come segue.

import java.util.*; 

public class EggTest{ 
ArrayList<egg> eggys = new ArrayList<egg>(); 
    public static void main(String [] args){ 

     egg a = new egg(); 
     egg b = new egg(); 

     eggys.add(a); 
     eggys.add(b); 

     for (egg eggo :eggys){ 
      System.out.println(eggo.size); 
     } 
    } 
} 

O

import java.util.*; 

public class EggTest{ 

    public static void main(String [] args){ 
     ArrayList<egg> eggys = new ArrayList<egg>(); 
     egg a = new egg(); 
     egg b = new egg(); 

     eggys.add(a); 
     eggys.add(b); 

     for (egg eggo :eggys){ 
      System.out.println(eggo.size); 
     } 
    } 
} 

secondo metodo può essere utilizzato solo se si sta accedendo ArrayList variabile solo dentro il metodo principale.

L'errore che si ottiene è solo perché si sta tentando di dichiarare la variabile ArrayList come dichiarazione di livello superiore. le variabili in java possono essere dichiarate solo all'interno di una classe o un metodo.

1

due cose:

  1. mettere questa linea all'interno della classe

    ArrayList<egg> eggys = new ArrayList<egg>;

  2. Ti manca() nella riga sopra.Dovrebbe essere:

    ArrayList<egg> eggys = new ArrayList<egg>();

0

Mi chiedo cosa eggys lista sta facendo di sopra della classe. In Java, non è possibile dichiarare le variabili sopra in una classe normale.