Problem mit Code aus "Sprechen Sie Java"

Status
Nicht offen für weitere Antworten.

Cronos

Mitglied
moin moin,

also ich habe folgendes problem:

ich programmiere nun seit ein paar monaten aber leider nur in qbasic, was bisher auch ganz normal funzte
aber einige freunde sagten mir ich solle eine bessere mächtigere sprache (wie zb. Java) lernen wenn ich mit
der programmierung anfangen will.

also hab ich mich durch google schlau gemacht und mir dann die ide "net beans v1.5" gezogen,
und das buch "Sprechen Sie Java" von Hanspeter Mössenböck besorgt.
ich habe dann sogleich mein erstes java programm, das traditionelle "Hello World" geschrieben.
Es gab noch keine Schwierigkeiten, doch als ich dann etwas anspruchsvolleres aus dem buch abschrieb (natürlich
nur um ein bisschen rumzuprobieren und mir das lernen leichter fällt), funzte das programm nicht,
ich probierte einen taschen rechner und später ein programm das nur 2 integer haben soll und zusammen addiert,

source:

Code:
class PrintSum{
  public static void main (String[] arg) {
    int i, j;
    Out.Print("Type 2 numbers:");
    i = In.readInt(); j = In.readInt();
    Out.Println("Sum ="+ (i +j));
  }
}

als ich das programm laufen lassen wollte passierte nichts,
vielleicht ist der compiler "falsch" eingestellt (falls das möglich ist) oder sonst etwas.
aber ich verstehe es nicht wieso nichts passiert.
ich hoffe jemand kann mir helfen oder vll eine andere ide empfehlen.
oder der code ist falsch...

danke schon mal im voraus

mfg
Cronos
 
Ich nehme mal an, dass der Autor nicht die Standard-Java-Klassen benutzt. Da du keine Imports geschrieben hast, müssten sich im Package java.lang die Klassen Out und In befinden. Dort gibt's die aber nicht. Also sind es vorgefertigte Klassen aus einer anderen Bibliothek bzw. Package. (Riecht irgendwie nach den IOTools - Finger weg!)
Dein gültiges Programm mit Standard-Java-Klassen geschrieben würde etwa so aussehen:

Code:
import java.io.*;

public class PrintSum {
  public static void main (String[] args) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    int i = 0, j = 0;
    try {
      System.out.println("Sum of 2 numbers");

      System.out.print("First number: ");
      i = Integer.parseInt(reader.readLine());

      System.out.print("Second number: ");
      j = Integer.parseInt(reader.readLine());

      System.out.println("Sum = "+ (i + j));
    }
    catch(NumberFormatException nfe) {
      System.out.println("Error! Please enter numbers only!");
    }
    catch(IOException ioe) {
      System.out.println("Error while reading from keyboard!");
    }
  }
}

Somit kannst du meiner Meinung nach auch deinen Thread-Titel ändern, weil dein Problem nichts mit NetBeans zu tun hat.
Im Übrigen sollten Klassennamen mit einem großen Buchstaben und Methodennamen mit einem kleinen Buchstaben beginnen.
 
sorry,
dass ich noch mal in diesen thread schreibe, obwohl ich ihn schon abhackte,
aber gibt es vll eine möglichkeit, den compiler\ide so einzustellen, dass man
das java.io*; usw nicht immer am anfang einbinden\schreiben muss, also nur den wirklichen java text?

mfg
Cronos
 
btw. ich liebe Autoren, die nicht die Java-Standard-Klassen benutzen, sondern irgendwelche @¬½-packages.... was überlegen die sich bloß :autsch:
 
Cronos: Das import am Anfang ist Java-Code der zu jedem Programm gehört. Das wegzulassen macht einfach keinen Sinn...
 
die Imports dürfen nicht fehlen, aber die gängigsten könnten ruhig von Anfang an dastehen,
vor allem bei Swing-GUIs sind das immer jede Menge..

statt die jedes mal rüberzukopieren könnte man in Eclipse ja auch das Code-Generation-Pattern ändern, wie mir gerade auffällt:

Code:
${package_declaration}

import java.io.*;
import java.util.*;
..

${type_declaration}
in Eclipse 2.1 unter Window, Preferences, Java, Code Generation, Code and Comments, New Java File

-------------

finde ich allerdings auch ziemlich schwach von einer IDE, dass sie so bekannte Klassen wie ArrayList nicht automatisch kennt,

das nachträgliche Importieren wenn man auf ein Error->Korrektur klickt oder das autmatische Einfügen bei Code-Vervollständigung sind da nur ein schwacher Trost,
kopiert man eine ganze Klasse aus dem Forum, hat man evtl. alles rot angeschrichen


@byto: meintest du noch was anderes als was ich bisher schon aufgezählt habe?
vielleicht gehts ja in den neueren Versionen 3.1 und höher besser 😉
 
hä?
ctrl+shift+o in eclipse
alt+shift+f in netbeans
und bei copy&paste werden zumindest in eclipse, die imports auch automatisch übernommen.
 
ctrl+shift+o ist ja nett, das muss man erst mal wissen 😉

und was meinst du mit dem 2. Satz?

wenn du
Code:
public class X extends JFrame {
}
in eine Klasse X.java einfügst dann wird automatisch import .. eingefügt?
bei mir kommt 'JFrame cannot be resolved or is not a valid superclass'
 
das wird anscheinend nur automatisch eingefügt, wenn man es aus einer anderen geöffneten java datei kopiert hat ???:L naja ladde.
 
phu,
also ich habe jetzt den code nochmals abgetippt und dann mit alt + shift + f die imports eingebunden,
doch dann ist folgende fehlermeldung erschienen: ???:L

No Imports found for the following types:

- In

- Out

...

könntet ihr mir vielleicht eine Java Maske posten?
so dass ich nur den code der im buch steht schreiben muss?
also so wie in c ungefähr:

#pragma hdrstop

#include <stdio.h>
#pragma argsused
int main(int argc, char* argv[])
{



getchar ();
getchar ();
return 0;
}

mfg
 
Wie oben schon erwähnt, benutzt der Autor keine Standardklassen. Daher kann man keine Aussage dazu machen, welche import-Anweisungen geschrieben werden müssen.
Selbst wenn du das Java-Package java.io.* importierst, wird nichts gehen, weil die verwendeten Klassen dort auch nicht zu finden sind.
 
Die vom Autor verwendeten Klassen In und Out (ohne Package - pfui teufel!) kann man hier bekommen.

Da die Klassen keinen Package-Namen haben, kann man sie auch nicht importieren; sie müssen also im gleichen Verzeichnis wie die Klassen stehen, die sie verwenden wollen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben