Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Lotto-Zahlgenerator -Applet kann nicht initialisiert werden!
Hallo!
Ich bin noch sehr unerfahren in Java und habe nun als erstes Programm ein Lottozahlgenerator in einem Applet programmiert. Dieses Programm soll 6 ungleiche, zufällig erstellte Lottozahlen erzeugen und diese im Applet darstellen. Dazu habe ich folgenden Code geschrieben. Wenn ich das Applet jedoch mit Hilfe eines Appletviewers testen will, zeigt dieser die Fehlermeldung: "Applet nicht initialisiert!" Ausserdem tauchen noch gleiche Lottozahlen auf, was nicht sein soll. Falls jemand den Fehler entdeckt, bitte melden!!!!
Code:
Code:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
//Lotto-Programm
public class lotto extends Applet {
int[] zahlen;
public void init() {
zahlen=new int[6];
setLayout(new BorderLayout());
int z;
for (int i=0;i<7;i++) {
z=(int)(48*Math.random()+1);
for (int j=i-1;j>=0;j--) { //Überprüfung auf Zahlengleichheit.. alle Zahlen vor der einzusetzenden w. überpr.
while (zahlen[i]==zahlen[j]) z=(int)(48*Math.random());
}
zahlen[i]=z;
System.out.println(z);
}
}
public void paint(Graphics gc) {
gc.drawString("Hallo!",20,20);
String s = new String();
for (int i=0;i<7;i++) {
s=String.valueOf(zahlen[i]);
gc.drawString(s,8,8);
}
}
}
Komisch, wenn ich mit dem Mauszeiger über das Applet im Browser fahre, dann wird unten in der Statusleiste: class file "Datei4.class" not found oder so ähnlich angezeigt, obwohl sich die Datei Datei4.class in dem gleichen Verzeichnis befindet wie die html- Datei. Auch eine absolute Pfadangabe klappt nicht.
Datei4.class? Deine Quellcodedatei heißt doch lotto.java., oder nicht?
Im IE ist die Java-Console standardmäßig nicht aktiviert. Du aktivierst sie ggf. in dem Du in den Internetoptionen Deines Systems oder im IE direkt im Dateimenü unter Extras -> Internetoptionen bei Microsoft VM die Java-Console aktivierst.
Dann findest Du sie im Dateimenü unter Ansicht als Java Befehlszeile. Aber diese Console zeigt nur die Ausgaben der MS-VM an. Das heißt, wenn Du eine JRE von Sun installiert hast, wird die Java-Console des IE bei deaktivierter MS-VM nichts anzeigen. Das übernimmt dann die Console der Sun-JRE.
Oops, ich hab da wohl die falsche HTML- Datei hier herein kopiert. Ich habe nämlich zwei Versionen des Lottoprogramms. Eine alte mit Datei4 und eine neue mit Lotto... Aber auch wenn ich in der HTML- Datei der Lotto- Version Lotto.class stehen habe, wird in der Java- Konsole folgende Fehlermeldung angezeigt:
Code:
Error loading class: lotto
java.lang.NoClassDefFoundError
java.lang.ClassNotFoundException: lotto
at com/ms/vm/loader/URLClassLoader.loadClass
at com/ms/vm/loader/URLClassLoader.loadClass
at com/ms/applet/AppletPanel.processSentEvent
at com/ms/applet/AppletPanel.processSentEvent
at com/ms/applet/AppletPanel.run
at java/lang/Thread.run
Dateien im Verzeichnis: lotto.bak, lotto.class, lotto.html, lotto.java
Programmcode:
Code:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
//Lotto-Programm
public class lotto extends Applet {
int[] zahlen;
public void init() {
zahlen=new int[6];
setLayout(new BorderLayout());
int z;
for (int i=0;i<7;i++) {
z=(int)(48*Math.random()+1);
for (int j=i-1;j>=0;j--) {
while (zahlen[i]==zahlen[j]) {
z=(int)(48*Math.random());
zahlen[i]=z;
}
}
zahlen[i]=z;
System.out.println(z);
}
}
public void paint(Graphics gc) {
gc.drawString("Hallo!",20,20);
String s = new String();
for (int i=0;i<7;i++) {
s=String.valueOf(zahlen[i]);
gc.drawString(s,8,8);
System.out.println(zahlen[i]);
}
}
}
Die Zeilen, die durch System.out.println() ausgegeben werden, werden jedoch in der Konsole meines Javaeditors angezeigt... Nur im Java Applet- Viewer des Editors und im Browser, kann nichts angezeigt werden!
Den Code schaue ich mir später noch mal an, zunächst noch einige Zwischenfragen:
Du benutzt den IE zur Anzeige des Applets?
Welche VM hast Du aktiviert?
Mit welcher Version des SDK/JDK hast Du das Applet erstellt?
Mit dem Parameter -source 1.1 kann die java.- Datei nicht codiert werden und mit -target 1.1 wird, wenn man im IE mit der Maus über das Applet fährt nicht mehr "class not found" oder so angegeben sondern "ArrayIndexOutOfBoundsException"..
Wenn ich das Programm mit dem Appletviewer starten will, was muss ich denn dann bei <Optionen> eingeben?
Schau mal bitte in Dein HTML-File, ich habe den Klassennamen, nach den Sun Coding Conventions, groß geschrieben.
Möglicherweise ist der Name der Klasse in Deiner HTML-Datei noch klein geschrieben.
Welche VM benutzt Du? Die vom IE oder eine von Sun?
Und dann guck mal in den Einstellungen vom IE, welche VM dort aktiviert ist. Es ist besser nur eine VM zu aktivieren und das sollte natürlich die von Sun sein. :wink:
In diesem Fall arbeitet Dein IE nicht mit der Sun JVM sondern mit der modifizierten und veralteten MS-VM.
Eine Zeile in den IE-Einstellungen über den Optionen für die MS-VM sollte aber auch die Sun-VM stehen.
Wenn nicht, ist das zunächst mal nicht uunbedingt ein Beinbruch. Dann ist es aber wichtig, dass Du in Deinem Fall den Code mit dem Befehl
Code:
javac lotto.java -target 1.1
kompilierst, weil die MS-VM den kompilierten Code der aktuelleren SDK-Versionen nicht mehr interpretieren kann.
Ich glaube so ist meine Version jetzt auch richtig:
Code:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class lotto extends Applet {
int[] zahlen;
public void init() {
zahlen=new int[6];
setLayout(new BorderLayout());
int z;
for (int i=0;i<6;i++) {
z=(int)(48*Math.random()+1);
for (int j=i-1;j>=0;j--) {
while (z==zahlen[j]) {
z=(int)(48*Math.random());
}
zahlen[i]=z;
}
zahlen[i]=z;
System.out.println(z);
}
}
public void paint(Graphics gc) {
gc.drawString("Hallo! Dies sind die Lottozahlen:",80,20);
String s = new String();
for (int i=0;i<6;i++) {
s=String.valueOf(zahlen[i]);
gc.drawString(s,80,i*10+40);
System.out.println(zahlen[i]);
}
}
}
Ich bin mir nicht ganz sicher, aber ich habs schon mehrmals getestet und es kamen keine gleichen Zahlen!