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.
zunächst möchte ich sagen, dass ich mit Programmieren und mit Java bis vor 2 Tagen noch nie was am Hut hatte, daher mein Kenntnisstand noch sehr sehr gering ist und daher Antworten bitte möglichst simpel verfassen!
hier der quellcode um den es geht:
Java:
public class Division
{
public static void main(String args[])
{
int zahl;
int erg;
System.out.println("Ganze Zahl eingeben:");
zahl = SimpleIO.readInt();
erg = zahl / (zahl-5);
System.out.println(erg);
}
}
Wenn ich das compile (sagt man das so? =]) bekomme ich in der Zeile:
[JAVA=9]zahl = SimpleIO.readInt();[/code]
die Fehlermeldung: non-static method readInt() cannot be referenced from a static context
Ist bestimmt irgendwas triviales, aber ich erkenne sowas leider noch nicht, daher bitte ich euch um eure aufklärung!
So wie es aussieht, ist die Methode readInt() nicht static, du brauchst also eine Instanz der Klasse SimpleIO (was auch immer das für eine Klasse ist), um die Methode benutzen zu können. Mach mal folgendes:
Java:
SimpleIO eingabedings = new SimpleIO(); //erzeugt eine Instanz der Klasse SimpleIO
zahl = eingabedings.readInt(); //die Instanz benutzt die Methode
readInt ist keine statische Methode. D.h. du musst erst eine Instanz von der Klasse SimpleIO erzeugen, um diese Methode auszuführen. Nachdem man nicht weiß, was das für eine Klasse ist, kann man den Code imho nur vermuten:
SimpleIO io = new SimpleIO();
zahl = io.readInt();
Könnte natürlich auch sein, dass SimpleIO keinen parameterlosen Konstruktor besitzt. Aber das wirst du dann schon sehen .
Kannst es aber auch lassen und Scanner oder einen BufferedReader instanziiert mit einem InputStreamReader nehmen.
readInt ist keine statische Methode. D.h. du musst erst eine Instanz von der Klasse SimpleIO erzeugen, um diese Methode auszuführen. Nachdem man nicht weiß, was das für eine Klasse ist, kann man den Code imho nur vermuten
den quellcode von SimpleIO habe ich, und habe die datei SimpleIO.java in mein verzeichnis, wo der quellcode des oben aufgeführten programms ist kopiert - war das richtig? :autsch:
den quellcode von SimpleIO habe ich, und habe die datei SimpleIO.java in mein verzeichnis, wo der quellcode des oben aufgeführten programms ist kopiert - war das richtig? :autsch:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;
public final class SimpleIO {
/* BufferedReader fuer den InputStream aus der */
/* der Konsole, verwendet fuer die Eingabe */
private static BufferedReader konsole = new BufferedReader(
new InputStreamReader(System.in));
/* Konstanten fuer Fehlermeldungen */
private static final String IOError = "FEHLER: bei der Eingabe!";
private static final String ChError = "FEHLER: leere Char-Eingabe!";
private static final String NFError = "FEHLER: keine Zahl oder Zahl im falschen Format eingegeben!";
/* allgemeine Methoden */
public static int[] getRandomIntArray() {
Random r = new Random();
int[] randomArray = new int[(r.nextInt() % 10)];
for (int i = 0; i < randomArray.length; i++) {
randomArray[i] = (r.nextInt() % 100);
}
return randomArray;
}
public static int getInt() {
/* Liest einen Int-Wert von der Konsole ein und gibt */
/* diesen an die aufrufende Klasse/Methode zurueck */
/* Im Falle einer fehlerhaften Eingabe wird die Zahl 0 */
/* zurueckgeliefert und eine Fehlermeldung ausgegeben. */
int zahl = 0;
try {
zahl = java.lang.Integer.parseInt(konsole.readLine());
}
// Faengt die IO-Fehler der Methode readLine() auf
catch (IOException e) {
System.out.println(IOError);
}
// Faengt die Exception der Methode parseInt auf;
// es wurden keine als Integer interpretierbaren
// Werte eingegeben
catch (NumberFormatException e) {
System.out.println(NFError);
}
return zahl;
}
public static double getDouble() {
/* Liest einen Double-Wert von der Konsole ein und gibt */
/* diesen an die aufrufende Klasse/Methode zurueck */
/* Im Falle einer fehlerhaften Eingabe wird die Zahl 0 */
/* zurueckgeliefert und eine Fehlermeldung ausgegeben. */
double zahl = 0;
try {
zahl = java.lang.Double.parseDouble(konsole.readLine());
}
// Faengt die IO-Fehler der Methode readLine() auf
catch (IOException e) {
System.out.println(IOError);
}
// Faengt die Exception der Methode parseInt auf;
// es wurden keine als Double interpretierbaren
// Werte eingegeben
catch (NumberFormatException e) {
System.out.println(NFError);
}
return zahl;
}
public static String getString() {
/* Liest einen String von der Konsole ein und gibt */
/* diesen an die aufrufende Klasse/Methode zurueck. */
/* Im Falle einer fehlerhaften Eingabe, wird der */
/* leere String zurueck gegeben. */
String zeile = "";
try {
zeile = konsole.readLine();
}
// Faengt die IO-Fehler der Methode readLine() auf
catch (IOException e) {
System.out.println(IOError);
}
return zeile;
}
public static char getChar() {
/* Liest ein Character von der Konsole ein und gibt */
/* diesen an die aufrufende Klasse/Methode zurueck. */
/* Im Falle einer fehlerhaften Eingabe wird das leere */
/* Character zurueckgegeben. */
/* Wird mehr, als nur ein Zeichen eingegeben, so wird */
/* nur das erste Zeichen beruecksichtigt. */
char zeichen = '\u0000';
String zeile = "";
try {
zeile = konsole.readLine();
if (zeile.length() > 0) {
zeichen = zeile.charAt(0);
} else {
System.out.println(ChError);
}
}
// Faengt die IO-Fehler der Methode readLine() auf
catch (IOException e) {
System.out.println(IOError);
}
return zeichen;
}
}
public class Division
{
public static void main(String args[])
{
int zahl;
int erg;
System.out.println("Bitte eine ganze Zahl eingeben:");
zahl = SimpleIO.getInt();
erg = zahl / (zahl-2);
System.out.println(erg);
}
}
Und ich bekomme in der zeile
[JAVA=9]zahl = SimpleIO.getInt();[/code] cannot find symbol
importierst Du denn die Klasse "SimpleIO" in "Division" ???:L
Als Tipp:
links in der Spalte mit den Zeilennummern sollte bei dem Fehler ein kleines rotes Symbol stehen!
Wenn Du dort mit der rechten Maustaste drauf klickst, geht ein Kontextmenu auf, in dem Du sowas wie "Quick Fix" findest (Tastenkürzel Ctrl+1)!
Hiermit bekommt Du Vorschläge zu Fehlerbehebung, die meist weiterhelfen !
@to nachdem nichts bei dir geholfen hat, hab ichs sogar gestern noch selbst ausprobiert. funktioniert wunderbar. entweder hast du die falsche SimpleIO oder noch eine andere oder ka..
float erg; //ein ergebnis einer division soll wirklich ein int sein?
System.out.println("Bitte eine ganze Zahl eingeben:");
zahl = SimpleIO.getInt();
erg = zahl / (float)(zahl-2); //dividend auf float kasten, sonst kommt als ergebnis immer int raus int/int = int
System.out.println(erg);