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.
Erste SchritteBin ein Programm am schreiben klappt aber nicht und weis nicht warum
Hey habe grade mit meinem Techniker angefangen und wir müssen ein wenig java programmieren habe diese Programm geschrieben aber er gibt nur mist aus vlt kann mir mal einer Helfen. Es soll eine Waage werden a ist das aufgelegte Gewicht. Die Waage soll mit einer schrittweisen Annäherung funktionieren also erst 1000g auflegen dan die hälfte usw halt in der while Schleife. Sie soll eine Toleranz von 2g haben deswegen a-b < 2
Java:
public class Waage {
public static void main(String[] args) {
double a;
double b = 1000;
Scanner scan = new Scanner(System.in);
System.out.println("Gewicht der Äpfel =");
a = scan.nextDouble();
while (a - b < 2) {
if (a < b) {
b = b - b;
b = b + b / 2;
} else {
b = b + b / 2;
System.out.println("Gelegtes Gewicht " + b + "Kg");
}
}
}
}
Die erste Frage, die bei solch einem Post immer kommt: "Was geht denn nicht?" Sowas wie: "Das Programm gibt x,y,z aus erwarten tue ich aber a,b,c" oder "Es fliegt an Zeile x eine Exception Y." wären ganz hilfreiche Infos für die Fehlersuche.
Ohne den Ablauf des Programms nachvollzogen zu haben, sind folgende zwei Zeilen sicher nicht richtig:
[JAVA=16]
b = b - b;
b = b + b / 2;
[/code]
Mit Zeile 16 setzt Du b nämlich auf 0 (b-b ergibt immer 0). In Zeile 17 rechnest Du dann 0 + (0/2), was wieder 0 ist. Das sieht nicht sinnvoll aus.
So hab das Programm jetzt noch was verändert. Ich wusste nicht wie ich das anders ausdrücken soll als b-b ich hab das jetzt mal in 0 geändert. Die Gewichte betragen immer die hälfte also 1000g/2= 500 500/2=250 usw. Wenn ich jetzt ein Gewicht über 1000g angebe schreibt der gelegtes Gewicht 1000g und wenn ich z.b. 874 eingebe schreibt er : Gelegtes Gewicht 500.0g
Java:
package Gleichstrom;
import java.util.Scanner;
public class Waage {
public static void main(String[] args) {
double a;
double b = 1000;
Scanner scan = new Scanner(System.in);
System.out.println("Gewicht der Äpfel =");
a = scan.nextDouble();
while (a - b < 2) {
if (a < b) {
b = 0 + b / 2;
} else {
b = b + b / 2;}}
System.out.println("Gelegtes Gewicht " + b + "g");
}
}
Na wenn jetzt sowieso schon jeder seinen Code postet
Java:
import java.util.Scanner;
public class Waage {
public static void main(String[] args) {
double a;
double b = 1000;
Scanner scan = new Scanner(System.in);
System.out.println("Gewicht der Äpfel = ");
a = scan.nextDouble();
System.out.println("Gelegtes Gewicht: " + b + " g");
while (Math.abs(a-b) > 2){
if (a < b) {
b *= 0.5;
System.out.println("Gelegtes Gewicht: " + b + " g");
} else {
b *= 1.5;
System.out.println("Gelegtes Gewicht: " + b + " g");
}
}
}
}
Der gibt bei der Eingabe
Code:
23
z.B. aus:
Code:
Gewicht der Äpfel =
23
Gelegtes Gewicht: 1000.0 g
Gelegtes Gewicht: 500.0 g
Gelegtes Gewicht: 250.0 g
Gelegtes Gewicht: 125.0 g
Gelegtes Gewicht: 62.5 g
Gelegtes Gewicht: 31.25 g
Gelegtes Gewicht: 15.625 g
Gelegtes Gewicht: 23.4375 g
....er nimmt also großen Aufwand auf sich, um die Äpfel zu wiegen
double a = 1541d;
double b = 1000d;
double c = 0;
while (b > 2) {
if (c + b > a) {
b /= 2;
} else {
System.out.println("Lege b = " + b);
c += b;
System.out.println("a = " + a);
System.out.println("c = " + c);
}
}
Code:
Lege b = 1000.0
a = 1541.0
c = 1000.0
Lege b = 500.0
a = 1541.0
c = 1500.0
Lege b = 31.25
a = 1541.0
c = 1531.25
Lege b = 7.8125
a = 1541.0
c = 1539.0625
Gibt 1539,0625 aus und hält wenn auch schwer zu beweisen immer an
Ja sicher
Ich dachte er will immer anzeigen lassen, wie groß das aufgelegte Gegengewicht grad ist.
Hab meinem Code oben mal noch ein sysout hinzugefügt, der das noch deutlicher macht.
Jetzt ist das Beispiel auch hübscher.
Ach: Hält übrigens auch immer an Ist das seit neustem was Tolles?
Dann bin ich der King: Meine while-Schleifen halten immer an
[EDIT]
Jeanpierre hat gesagt.:
das kleinste gewicht ist 1,953125g ja aber es soll ja auch für jedes andere Gewicht unter 2000g funktionieren
Gewicht der Äpfel =
23
Gelegtes Gewicht: 1000.0 g
Gelegtes Gewicht: 500.0 g
Gelegtes Gewicht: 250.0 g
Gelegtes Gewicht: 125.0 g
Gelegtes Gewicht: 62.5 g
Gelegtes Gewicht: 31.25 g
Gelegtes Gewicht: 15.625 g
Gelegtes Gewicht: 23.4375 g
import java.util.Scanner;
public class Waage {
public static void main(String[] args) {
double a;
double b = 1000;
Scanner scan = new Scanner(System.in);
System.out.println("Gewicht der Äpfel =");
a = scan.nextDouble();
while (Math.abs(a-b) > 2){
if (a < b) {
b *= 0.5;
} else {
b *= 1.5;
}
}
System.out.println("Gelegtes Gewicht: " + b);
}
}