2013-09-24 4 views
0

Я получил эту часть кода:Получение ошибки при попытке объявить класс в Java

import java.util.*; 
import java.io.*; 
public class Oblig2 { 
Meny menyen = new Meny(); 
public static void main (String[] args) { 
Scanner input = new Scanner (System.in); 
int menyvalg=0; 


//Lager filen ved navn Fugleobservasjoner 
try{ 
PrintWriter fil=new PrintWriter(new FileWriter("Fugleobservasjoner.txt")); 
} catch (IOException e) { 
    System.out.println("Filen finnes ikke"); 
    } 

//Selve menyen til programmet i en egen klasse. 
class Meny { 
    int menyvalg=0; 
    void Meny() { 
System.out.println("====== Meny for registrering av fugleobservasjoner ====="); 

System.out.println("\n1. Registrer en fugleobservasjon"); 
    System.out.println("2. Skriv ut alle fugleobservasjoner av en type"); 
System.out.println("3. Skriv ut alle fugleobservasjoner på ett bestemt sted"); 
System.out.println("4. Avslutt systemet"); 

System.out.println("\nVennligst velg et tall: "); 
menyvalg = input.nextInt(); 
    } 
} 



//Dette er kommandoene for valget som gjøres i menyen. 


    } 
} 

Но я получаю ошибки при компиляции, а также указатель на ту часть, где я объявляю Meny класса. Он говорит: «Не могу найти Символ, который предполагает, что переменная не объявлена, но как мне это сделать? (Я полностью понимаю, что могут быть лучшие способы кодирования этого, но это то, что я получил до сих пор.) EDIT: Отредактировал код, так как я только видел, что он не включает все ... Извините.

+0

Убедитесь, что вы используете соответствующие инструкции 'import'. –

+0

На основе фигурных скобок в коде, который вы нам показываете, похоже, что вы объявляете класс внутри основного метода. Вы должны объявлять классы вне методов. –

+2

@GennaroDeLuca Вы можете объявлять классы в методах. –

ответ

3

Определить класс Meny, прежде чем пытаться использовать его, то есть двигаться

class Meny { 
    ... 
} 

впереди

Meny menyen = new Meny(); 

Порядок, в котором классы определены вопросы для компилятора. Кроме того объявить финальный Scanner экземпляра, так что можно ссылаться во внутреннем классе

final Scanner input = new Scanner(System.in); 
+0

Но это зависит от того, на каком его объявлении компилятор ничего не знает об этом ... – Reimeus

+2

Также переменная 'input' должна быть' final', чтобы использоваться внутри 'Meny'. – SamYonnou

+0

@SamYonnou Да, хорошая точка, обновлено – Reimeus

-1

Если это ваш полный код, то вам не хватает } закрыть void Meny(), другой } закрыть class Meny, а другой } закрыть main(). Кроме того, у вас есть main(), размещенный в более крупном классе? Java не позволяет функциям быть внешними классами.