Error bei Java??? (leichte Punkte)?

Also ich schreibe ein Programm wo ich den Fehler nicht finde, aber ich habe einen Tipp bekommen.
Könnte jemand den für mich um setzen weil mein Wissen da zu nicht reicht.



Tipp:
Irgendwann bekommst du einen Blick für so offensichtliche Klammerfehler..alles ab der Deklaration Zufallszahl zufallszahl .... Liegt außerhalb des Main Blocks

public class Zufallszahl extends JFrame{

public static void main(String[] args) {
new Zufallszahl();
}

>>>Zufallszahl zufallszahl = new Zufallszahl();
...
Das liegt ausserhalb des Main Blocks und kann somit nicht ausgewertet werden!!



Quellcode:
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.util.Random;

public class Zufallszahl extends JFrame{

public static void main(String[] args) {
new Zufallszahl();
}

Zufallszahl zufallszahl = new Zufallszahl();
int b=zufallszahl.zufallszahl(1, 2);


public int zufallszahl(int min, int max){
Random random = new Random();
return random.nextInt(max - min + 1) + min;

}


public Zufallszahl(){
super("Caipi");

if(b==2){
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add(new JLabel(new ImageIcon("caipi.jpg")));
pack();
setVisible(true);
}
if(b==1){ System.out.println("eins");}
else{System.out.println("nichts");}
}

}

🐟 Fish 🐟2012-08-27T04:59:38Z

Beste Antwort

Was Gaston meint ist das notepad ++ dir die zusammengehörenden klammern markier wenn du mit dem Cursor drauf fährst.
Bei den Programmierern gibt es 2 Koalitionen.die Klassiker setzen Klammern immer untereinander und Scheiben IMMER OFFENE UND GESCHLOSSENE Klammer zu erst.
Die anderen setzen die öffnende ans Zeitenende. Ich bin ein Klassiker und habe selten klammerprobleme.
Deine entscheidung.
Zu deiner mail:
public static void main(String[] args)
{
___new Zufallszahl();
}
So ist die klassische schreibweise. Und die Klammer wird IMMER zuerstso geschrieben
{!!! hier schreiben !!!}
Und dann wird zwischen den beiden Klammern eingefügt. Das gilt aber nicht nur für JEDE Art von Klammern sondern für alles was geöffnet und geschlossen wird. also
Open(...) !!! hier schreiben !!! close(...)
Alloc(...) !!! hier schreiben !!! Dealloc(...)
<Konstzruktor>() !!! hier schreiben !!! <destruktor>()
Und sogar Strings "!!! hier schreiben !!!"
und so weitter

Das ist deine Schreibweise, aus Platzgründen auch sehr beliebt aber natürlich Fehleranfällig für Symetriefehler
public static void main(String[] args) {
___new Zufallszahl();
}

==============================
Hab mich mal in deinen Code eingelesen. Da isat einiges durcheinander geraten. YC unterstützt keine führenden Leerzeichen. daher hab ich die Leerzeichen durch soppelpunkte ersetzt. Dann siehst du den Fehler sehr deutlich, weil zusammenhängende Klammern immer untereinander stehen. Ich denke nicht das es dir viel bringt wenn ich deinen Code korrigiere. Daher dein Code in meiner Formatierung.

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.util.Random;

public class Zufallszahl extends JFrame
{

::public static void main(String[] args)
::{
::::new Zufallszahl();
::}

::Zufallszahl zufallszahl = new Zufallszahl(); // hier gibt es überhaupt keinen Methodenprototyp.
::int b=zufallszahl.zufallszahl(1, 2);

::public int zufallszahl(int min, int max){
::Random random = new Random();
::return random.nextInt(max - min + 1) + min;
} // hier endet bereits die Klassendefinition


::public Zufallszahl() // Dieser Code steht ausserhalb jeder Klassendefinition.
::{
::::super("Caipi");

::::if(b==2)
::::{
::::::setDefaultCloseOperation(EXIT_ON_CLOSE…
::::::getContentPane().add(new JLabel(new ImageIcon("caipi.jpg")));
::::::pack();
::::::setVisible(true);
::::}
::::if(b==1){ System.out.println("eins");}
::::else{System.out.println("nichts");}
::}
} // Und diese Klammer ist eine schliessende Klammer mehr als du überhaut geöfnet hast.

Anonym2012-08-26T06:24:24Z

Benutze am besten mal Notepad ++, da erkennst Du die Klammerfehler dann selber: