OOP Halbierer

jack

Mitglied
Hallo, ich bekomme diese Aufgabe leider nur sehr unschön hin... Hoff ihr könnt mir helfen. Bin jetzt schon dankbar über eure Hilfe.

Schreiben Sie das Java-Programm Halbierer, das solange eine ganze Zahl von der
Tastatur einliest, bis jemand es durch die Eingabe von 0 beendet. Nach der Eingabe der
Zahl soll diese halbiert und am Bildschirm ausgegeben werden. Achten Sie darauf, dass das
Ergebnis inklusive Nachkommastellen ausgegeben wird.

Eigentlich ist die Aufagbe nicht schwer. Hab es schon gefühlte 1000mal mit verschiedenen Schleifen versucht. Aber leider kein perfektes Ergenis bekommen. Das hier ist mein "bestes" Ergebnis.???:L
Java:
import util.StdInput;
public class aufg_2b {

	
		public static int zahlEingeben() {
			
			int zahl = StdInput.readInt ("Zahl");
			return zahl;
		}
		
		public static void main(String[] args) {	
		
		System.out.print("Zahl größer 0 eingeben um zu Starten");
		int zahl=zahlEingeben();
	
		while(zahl!=0){ 
		zahl=zahlEingeben();
		if (zahl!=0){
		double y= (double)zahl/2;
		System.out.println(y);}
		else {break;}
		} 
}

Ich bekomm das einfach nicht anders hin mit der Zahl die eingelsen wird...Also hab des mit dem s.o.p einfach so hingedreht, als bräuchte man eine Zahl um das ganz zu starten.:D.. mir wäre es aber lieber wenn es ohne das funktionieren würde... steht ja auch nix davon in der Aufgabenstellung... ich hoffe ihr wisst wie ich es meine!!!
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
fang doch mit
int zahl=42;
an,

das else mit break ist unnötig, die while-Bedingung macht dann eh Ende

edit:
eine perfekte Schleife gibt es nicht weil die Überprüfung auf Abbruch zwischen Einlesen und Verarbeitung stehen muss,
nur mit while-Bedingung ohne ein weiteres if oder vorgelagerte Einlese-Runde nicht zu machen

zusätzlich zu Marcos Beispiel unten noch als Design-Möglichkeit ohne if:
Java:
int zahl=zahlEingeben();
while(zahl!=0){ 
   // Verarbeitung
   zahl=zahlEingeben();
}
 
Zuletzt bearbeitet von einem Moderator:

Marco13

Top Contributor
Sowas wie
Code:
while (true)
{
    int zahl = eingeben();
    if (zahl == 0) break;
    rechne(...);
}
wäre eine Möglichkeit.
 

Andi_CH

Top Contributor
Jetz hab ich so oft double gelesen, da kann ich nicht widerstehen :)

Double, double toil and trouble fire burn, and caldron bubble
(Nein ich weiss nicht was es heisst, nur dass es von William Shakespeare ist)

Aber immerhin hab ich gelernt dass 2. auch schon reicht - ich habe da immer Diskplatz verschwendet und 2.0 hingeschrieben ;-)
 

Marco13

Top Contributor
Notfalls ZIPpen. Obwohl Quellcode, der durch ZIP noch mehr als 5% kleiner wird, offensichtlich noch nicht kompakt genug geschrieben ist :cool:
 

Landei

Top Contributor
Double, double toil and trouble fire burn, and caldron bubble
(Nein ich weiss nicht was es heisst, nur dass es von William Shakespeare ist)

Das sind sicher die drei Hexen aus Macbeth.

[Edit] Da isses ja, Macbeth, 4. Akt, 1. Szene / Hexen: "Doppelt plagt euch, mengt und mischt! / Kessel brodelt, Feuer zischt"
 
Zuletzt bearbeitet:
S

SlaterB

Gast
irgendwo muss ja auch Verarbeitung stattfinden, wenn vor dem Einlesen -> Zahl noch nicht da,
wenn danach -> mit if 0 abfangen
 

need.help

Mitglied
Wie wärs mit einer boolean Methode die einliest, checkt ob > 0 oder == 0 und halbiert wenn grösser als 0. Diese dann wiederum in einer while schleife.


MfG
 

Neue Themen


Oben