2013-07-26 24 views
5

Przebaczam za opublikowanie pytania bardzo podobnego do tego, które opublikowałem wczoraj wieczorem. Mam uproszczone problemu, aby o coś zapytać dokładniej:(Beginner Java) klasa, interfejs lub wyliczenie oczekiwane

Dostaję (klasa, interfejs, lub enum oczekiwane) Błąd kiedy użyć następującego kodu:

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); 
     } 
    } 
} 

wyjście z kompilator to:

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

Nie robię czegoś dobrze. Czy ktoś może mi pomóc dowiedzieć się, jak korzystać z ArrayList?

+0

Proszę wziąć pod uwagę klas nazw za pomocą UpperCasedFirstLetter. Jest to konwencja – RiaD

+0

Mówiąc prościej: możesz podać zmiennej początkowej wartość "int i = 1" u góry klasy przed metodami, ale nie wtedy, gdy używa "nowego". Tak więc "foo bar = new foo()", który musi przejść do metody. – DevOfZot

+0

Przeczytaj pierwszą książkę Head – MayurB

Odpowiedz

2

Java jest językiem zorientowanym wyłącznie na obiekt, co oznacza, że ​​wszystkie/wszystkie właściwości powinny należeć do encji, np. Class/interface/enums. W twoim przypadku zdefiniowałeś właściwość/zmienną, jak wspomniano poniżej, która nie należy do klasy/enum/interface, a zatem kompilator java na to uskarża.

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

Nie możesz mieć tej właściwości jak zmiennych globalnych w innych językach programowania. Środowisko o charakterze czysto obiektowym Javy na to nie pozwala.

Ponadto, jak wspomniano w komentarzu "skiwi", w definicji ArrayList występuje błąd składniowy. Brakuje nawiasów pod koniec. Należy skorygować do:

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

Powinna to być 'ArrayList eggys = new ArrayList ();' chociaż. OP nie trzymał się konwencji nazewnictwa i, co gorsza, popełnił błąd składniowy w dekloryzacji. – skiwi

+0

@skiwi Tak, przeoczyłem jego błąd składniowy, ponieważ starałem się skupić na zrozumieniu języka. W każdym razie, dzięki, pozwól mi umieścić to w rozdzielczości. –

+0

Dziękuję wszystkim, mam to już teraz! Wybieram odpowiedź tak szybko, jak tylko mogę! –

6

Można deklarować tylko zmienne wewnątrz klasy lub metody; nie jako kod najwyższego poziomu.

2

przeciwieństwie do innych języków takich jak C lub C++, nie można umieścić zmienne lub inne deklaracje poza klasą lub funkcją:

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); 
     } 
    } 
} 

W tym przypadku zmienna lokalna wygląda lepszym wyborem.

0

wykonaj następujące czynności.

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); 
     } 
    } 
} 

LUB

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); 
     } 
    } 
} 

Druga metoda może być stosowana tylko w przypadku dostępu ArrayList zmiennej tylko wewnątrz główne metody.

Błąd, który otrzymujesz, polega na tym, że próbujesz zadeklarować swoją zmienną ArrayList jako deklarację najwyższego poziomu. zmienne w języku Java mogą być deklarowane tylko wewnątrz klasy lub metody.

1

dwie rzeczy:

  1. Umieść tę linię wewnątrz klasy

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

  2. brakuje() w powyższej linii.Powinno być:

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

0

zastanawiam co eggys lista robi powyżej klasy. W języku Java nie można zadeklarować zmiennych powyżej do normalnej klasy.