Hallo, Ihr Experten,
wer hilft mir? Ich habe ein Script aus einem Buch abgeschrieben. Das soll ein Programm für eine Stopuhr werden. Ich kann keinen Tippfehler entdecken. Trotzdem kommen Fehlermeldungen. Anbei ein Printscreen von dem Editor und dem Terminal. Ich bitte Euch, mir zu zeigen, was hier falsch ist und was ich noch dazu schreiben muss, damit es eine funktionsfähiges Java-Programm wird.
nicht zu verachten auch Texte, die essentielle Dinge benennen
[..]
Die ganze Programmlogik sitzt in einer Klasse Quadrat, die drei Methoden enthält.
[..]
Zum Schluss muss es noch ein besonderes Unterprogramm main() geben, das für den Java-Interpreter den Einstiegspunkt bietet. Die Methode main() ruft dann die Methode ausgabe() auf.
[..]
Vielen Dank für die Antwort. Das Programm Lotto.java steht vollständig in dem Buch und funktionier.
Java:
// Einsatz des Zufallsgeneratorsimportjava.util.*;classLotto{publicstaticvoidmain(String args[]){int zahl;int anzahl =0;Random generator =newRandom();System.out.println("\n Die Ziehung der Loozahlen \n");while(true){// Zahl zwischen 0 (inkl.) und 50 (exkl.)
zahl = generator.nextInt(50);if(zahl ==0)// 0 brauchen wir nichtcontinue;// Zahl ausgebenSystem.out.println(" Gezogene Zahl: "+ zahl);// Sind sechs Zahlen gezogen worden? Dann Ende.
anzahl++;if(anzahl ==6)break;}}}
Wie ich das Programm stopuhr.java vervollständigen muss, so das es funktionier, ist mir noch nicht so ganz klar. Ich werde probieren.
Gruß
Wolfgang aus Nürnberg
Was für ein Buch ist das denn?
Wie schon gesagt, du brauchst eine Main-Methode.
Schau dir dabei das andere Beispiel von Lotto an, Zeile 5.
Gibst du deinem Programm keine Argumente mit, kann es auch keine Argumente zurückgeben.
Ich bin gerade darüber, ein Java-Buch zu lesen. Leider habe ich mich noch nicht so recht an die Sache gewöhnt. Ich wäre Dir dankbar, wenn Du mir schreiben würdest, wo ich diese Zeile
Java:
publicStopuhr()// Konstruktor der Klasse "Stopuhr" {
Jetzt gebe ich es erst mal auf. Es geht nichts. Wie kommt es, dass zwischen den geschweiften Klammern nur der Kommentar steht. Also ich danke Euch. Vielleicht später wieder einmal eine Frage von mir.
Gruß
Wolfgang
publicclassHelloWorld{publicstaticvoidmain(String[] args){for(int i =0; i <6; i++){System.out.println((int)(Math.random()*49.0)+1);}}}
Jetzt erkennst du schon, was essentiell für jedes Java-Programm ist: die main-Methode, der Programmeinstiegspunkt.
Zuerst versucht man sich an rein imperativen Programmen (mit Ausnahme einer Klasse natürlich), OOP kommt später.
(PS: Falls keine Zahlen doppelt vorkommen sollen, ist das ganze etwas komplizierter, dann müssen noch zusätzlich die schon generierten Zahlen "gespeichert" werden.)
Hier noch drei "gängige" Varianten von Lottoo ohne Doppelte (vielleicht interessant):
Java:
List<Integer> zahlen =newLinkedList<Integer>();for(int i =1; i <=49; i++){
zahlen.add(i);}for(int i =0; i <6; i++){System.out.println(zahlen.remove((int)(Math.random()*(49- i))));}
Java:
List<Integer> zahlen =newLinkedList<Integer>();for(int i =1; i <=49; i++){
zahlen.add(i);}Collections.shuffle(zahlen);for(int i =0; i <6; i++){System.out.println(zahlen.get(i));// oder remove(0);}
Java:
Set<Integer> zahlen =newHashSet<Integer>();while(zahlen.size()<6){int i =(int)(Math.random()*49.0)+1;if(!zahlen.contains(i)){
zahlen.add(i);System.out.println(i);}}
Ich habe alle 3 Scripts mit javac ausprobiert. Bei jedem kommen 5 oder noch mehr Errors. Falls da noch etwas dazugehört z. B. die Zeile mit dem "main", dann müsstest Du das für einen Anfänger wie mir bitte auch schreiben. Ich komme bis jetzt noch nicht so recht mit dem Java klar.
Gruß
wolfgangti08
wie sieht es mit meinem Posting und meinem Link aus, funktioniert das Quadrat-Programm vom Insel-Buch?
du musst auch schon im Buch weiterlesen und verstehen was eine main-Methode (oder überhaupt eine Methode) und eine Klasse ist usw.,
solange das nicht der Fall ist, ist es dir eben nicht möglich, unkontrolliert Code herumzukopieren
Ich frage das jetzt damit ich abschätzen kann, ob es wert ist meine Enerige dafür zu verwenden dir zu helfen:
Willst du das lernen oder musst du das lernen?
Java:
publicStopuhr()// Konstruktor der Klasse "Stopuhr" {
Nimm dir 10 Sekunden Zeit und schau dir das an. Fällt dir auf, dass sogar der Formatierer hier im Forum erkennt dass die { zum Kommentar gehört.
Es ist ganz einfach. Versuch diese Fehler mal alleine in Ruhe zu lösen...
In einem Kommentar kann alles stehen, das überprüft der "Computer" doch garnicht.
Aber alles was hinter // steht ist eben ein Kommentar. Wenn du bei solchen Fehlern scheiterst, wirst du nicht weit kommen.
Als Tip für die Zukunft. Sammel zu deinem Problem Begriffe (Kommentar, Java, Klasse, Methode, main) und jag das durch Google. Kein Mensch kann dir das Lesen abnehmen und das Denken sowieso nicht. Alle 10 Minuten mit Fitzelsproblemen in einem Forum zu schreiben bringts nicht.
Und alle Fragen sind bereits beantwortet worden. Alles weitere wäre reines vorsagen.
Hast du schon Programmierkentnisse in anderen Sprachen ?
Wenn nicht,
dann erstelle einfach mal eine Klasse, die nur eine Main-Methode hat
und spiel dich dort etwas mit Java-Code (In eine Konsole ausgeben, Werte zuweisen etc.)
Java:
//Quelle: Java ist auch nur eine InselclassApplication{publicstaticvoidmain(String[] args ){// Start des ProgrammsSystem.out.println("Hallo Javanesen");// Ende des Programms}}
Konstruktoren, Methoden, Objekte ... das ganze sollst du dir erst etwas später ansehen, vorerst geht es nur ums Grundverständnis.
Deine Lottozahlen und solche ähnlichen Übungsprogramme kannst du alle in der Main schreiben, die sind nicht so groß.
Ich halte learning-by-doing nicht für die optimale Lösung. Im schlimmsten Fall kommst du bei einem Programm raus, was vielleicht funktioniert aber umständlich ist, weil die Grundlagen fehlen. Wer glaubt, er hat bei jedem neuen Problem immer selbst die zündende Idee wird schnell scheitern. Dafür gibt es Fachliteratur und Papers die für viele Probleme bereits sehr gute Lösungen anbieten. Wer da immer das Rad neu erfinden will hats sehr schwer.
Kunststück, im Code wimmelt es nur so von Syntax-, aber auch von konzeptionellen Fehlern die zeigen, dass Du Variablen, Code-Blöcke, Zugriffsmodifizierer u.ä.m. nicht begriffen hast. Das erinnert mich an Troll-Posts.
Ich habe ein kleines Beispiel gebastelt. Die Methode main() ist nur vorhanden, um die Funktionsweise der Klasse Stopuhr zu demonstrieren.
Code:
import java.util.*;
class Stopuhr {
private long start, ende;
// Mit der Instanzierung von Stopuhr beginnt die Uhr zu laufen
public Stopuhr() {
start = start = System.currentTimeMillis();
ende = 0;
}
// Mit ende() wird die Stopuhr abgefragt
public void ende() {
ende = System.currentTimeMillis();
System.out.println(" Die Berechnung dauerte " + (ende - start)
+ " Millisekunden.");
}
public static void main(String[] args) {
Stopuhr s = new Stopuhr();
// main() schläft für 3000 Millis
try {
Thread.currentThread();
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Ausgabe der Berechnung
s.ende();
}
}
Man kann nicht garantieren, dass die Klasse Stopuhr genau den Wert liefert, welches man in sleep() verwendet hat.
Jetzt habe ich von Euch doch noch etwas profitiert, ich meine gelernt. Das Beispiel von tuttle64 habe ich ausprobiert. Danke. Das von bO312 funktioniert und ich habe es mir ausgedruckt. Die Lernvorschläge von timbeau versuche ich. Ich studiere das Buch "jetzt lerne ich Java7 " . Aber ich habe manches leider nicht richtig verstanden. Ich danke Euch allen.
Gruß
Dann stelle bitte in Zukunft Fragen zum Thema aus dem Buch, den Du nicht verstanden hast, anstatt hier Code reinzustellen, der hinten und vorne nicht compilierbar ist.
Ich habe alle 3 Scripts mit javac ausprobiert. Bei jedem kommen 5 oder noch mehr Errors. Falls da noch etwas dazugehört z. B. die Zeile mit dem "main", dann müsstest Du das für einen Anfänger wie mir bitte auch schreiben. Ich komme bis jetzt noch nicht so recht mit dem Java klar.
Gruß
wolfgangti08
du musst/solltest das in die main kopieren und die unterschiede erkennen...
einige raten am anfang davon ab, aber mit einer IDE kannst du codeformatierung benutzen (alt+shift+f in netbeans), die in jeden größeren projekt pflicht sein sollte...
Aber das schließt nicht aus, dass es auch für den Einstieg geeignet ist. Wenn ich mich nicht irre, steht im Vorwort des Autors sogar hervorragend fürs Selbststudium. Deshalb empfinde ich Camills Kommentar auch als unangebracht, zumal er nich mal ne Alternative dazu nennt
Bin sicher, viele sind der gleichen Meinung..
Aber das schließt nicht aus, dass es auch für den Einstieg geeignet ist. Wenn ich mich nicht irre, steht im Vorwort des Autors sogar hervorragend fürs Selbststudium. Deshalb empfinde ich Camills Kommentar auch als unangebracht, zumal er nich mal ne Alternative dazu nennt
Bin sicher, viele sind der gleichen Meinung..
In diesem Thread ging es ursprünglich nicht um den Kauf eines Buches - deßhalb auch keine alternativen von mir genannt.
Wie "ARadauer" jedoch schrieb ist "Java von Kopf bis Fuss" wohl eines der besten Anfängerbücher wenn es um Java geht. Ich habe es zwar selber noch nie gelesen(nur rein "geschnuppert"), jedoch kann man sich auf die inzwischen zahlreichen positiven Rezensionen verlassen.
Ja eben, das ist das Problem. Wenn du java insel auch nicht gelesen hast, lässt sich nur aufgrund von Rezensionen darüber keine Aussage wie "is nicht geeignet" treffen, IMHO
Biete dem TO doch verschiedene Auswahlmöglichkeiten an, entscheiden kann er dann
"Nur mal reingeguckt" hab ich midestens in beide Bücher bis jetzt..
(flame war off)
Meine Meinung zu:
* Java von Kopf bis Fuss: Dieses Buch ist imho das beste für Anfänger. Es macht nicht nur Spaß, dieses Buch durch zu arbeiten, sondern die Inhalte bleiben auch hängen. Super Struktur und Aufbau, dabei macht man schnelle Fortschritte und entwickelt ein Programmierverständnis. Kostet zwar 50,-€, aber die lohnen sich allemal.
* Java ist auch eine Insel: Für einen Anfänger imho "to much information"! Dieses Buch ist ein klasse Nachschlagewerk, aber auch ich denke als Tutorial ungeeignet. Zwar kostenlos, aber es durch zu arbeiten ist echt mühsam.
Ja eben, das ist das Problem. Wenn du java insel auch nicht gelesen hast, lässt sich nur aufgrund von Rezensionen darüber keine Aussage wie "is nicht geeignet" treffen, IMHO
Was ist das Problem?
Ich schrieb das ich in das Buch "Java von Kopf bis Fuss" nur rein "geschnuppert" habe, "Java ist auch eine Insel" ist seit langem eines der Nachschlagewerke das ich benutze.