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.
Programm zum Einlesen einer Zahl und Ausgabe der Wurzel
- Du kannst keine Instanzmethode aus einer statischen Methode (main) aufrufen.
- Fließkommazahlen haben in Java den Punkt und kein Komma: 0,5 -> 0.5
- Wenn du x und oldx innerhalb der Schleife definierst sind sie für den Schleifenkopf nicht sichtbar
- Wenn du return in einer Methode aurufst, ist die Methode beendet und alles was dahinter steht wird und kann nicht mehr ausgeführt werden.
- Du rufst nie deine Methode auf.
- Dein Algorithmus ist falsch.
PS: "Kompiliert nicht" ist keine Fehlerbeschreibung und auch nicht das was der Compiler dir sagt! Für das nächste mal eine Konsolenausgabe dazuhängen und besser vorher Google befragen.
das Programm erkennt Scanner anscheinend nicht. das ad- on dafür hatte ich aber schon herunter geladen.
wie kann ich das beheben?
eigentlich möchte ich nur das Beispiel aus dem Buch von Christian Silberbauer so abändern, dass die Zahl aus der die Wurzel gezogen werden soll eingegeben wird und danach das Ergebnis ausgegeben wird.
Java:
public class Wurzel {
double a;
double x=0;
double oldx;
public double wurzel (double a){
do{
oldx=x;
x=0.5*(x+a/x);
}
while (x != oldx);
System.out.println("Wurzel von a ist" + x);
return x;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.printf("Bitte Zahl eingeben:");
double a = sc.nextDouble();
}
}
hi,
dafür brauchst du kein ad-on...
du musst scanner noch importieren aus java.util.Scanner
und in deiner main methode fehlt noch immer der Methodenaufruf (methode wurzel statisch machen und dann double erg = wurzel(a) in der main-methode)
Gruß,
javampir
aber die Methode wurzel(…) ist ja nicht statisch, weil die Werte immer wieder überschrieben werden, bis die Wurzel gefunden wurde (oldx=x), wenn ich da einfach static reinschreibe, dann sagt das Terminal, dass die Variablen der Methode nicht statisch sind. Sind sie ja auch glaube ich nicht, bin aber noch nicht damit durch den Abschnitt darüber im Buch zu lesen.
hier wahrscheinlich irgendwie das Gleiche Problem: das in der nicht statischen Methode stehende System.out.println(…) wird von der Konsole nicht ausgegeben.
ach menno, bin einfach nicht dafür begabt und muss es trotzdem in der uni schreiben.
Java:
public class Rechteck{
private static int maxNr=0;
private static final int INTERVALL = 10;
private int nr;
private int breite;
private int hoehe;
public Rechteck(int breite, int hoehe){
nr= maxNr++;
if(nr % INTERVALL == 0)
System.out.println("Rechteck Nr. " + nr + "angelegt.");
}
Rechteck r1 = new Rechteck(10,50);
Rechteck r2 = new Rechteck(20,30);
Rechteck r3 = new Rechteck(50,60);
Rechteck r4 = new Rechteck(90,90);
Rechteck r5 = new Rechteck(10,10);
public static void main(String[] args){
System.out.println("Ich verstehe statische Methoden nicht.");
}
}
Also saskia,
1. sehe ich die privaten Variablen int höhe,breite als überflüssig an, da sie nie genutz werden, außerdem kann man das ganze auch kürzer schreiben mit: private int nr, breite, hoehe;.
und 2. "if(nr % INTERVALL == 0)
System.out.println("Rechteck Nr. " + nr + "angelegt.");
}"
wird nie in der main-Methode aufgerufen du müsstest die Rechtecke innerhalb der main-Methode erstellen, damit sie überhaupt erst "richtig" erstellt werden und die Ausgabe in der Konsole ausgegeben wird, dann solte es klappen.
Nicht ganz, ich bin immer noch ein Anfänger-Fortgeschrittener Java-Programmierer und noch ein wenig jünger, aber wenn du die Javagrundlagen lernen willst kann ich dir nur diese Videoreihe ans Herz legen, falls du davon etwas nicht verstehst kannst du ja im Forum (oder mich per Nachricht) fragen https://www.youtube.com/playlist?list=PL71C6DFDDF73835C2