Probleme mit While Schleife

arne1234

Mitglied
Hallo;


int zahl=0;
while (x <= zahl) {
x++;
}
System.out.println(zahl);

ich dachte er printet mir dann die durchläufe aus ist aber nicht der fall

x wird einggeben und er soll bei 0 abrrechen mir die bis dahin gelaufenen durchgänge ausgeben......

möchte alle negativen zahlen bis 0 hochzählen lassen können und die anzahl der zählvorgänge wissen???

jetz sagt er immer 0

steh aufn schlauch (mal wieder ) omg
 
int x = InputBox.readInt("Geben Sie eine Zahl ein");

final int zahl=0 ;
while (x <= zahl) {
x++;
}
System.out.println(x); // Klar ich muss ja x ausprinten aber jetz meint er 1 immer egal ob ich -6 -3 oder sonst neg wert eing kp bin im ***** is letzte aufgabe zu krank ich lass es

trozdem danke für den denkanstoss bin seid heut um 2 uhr an den aufgaben nu bin ich platt
 
Aufgabe ist folgende falls es euch interessiert:

Die aus der Mathematik bekannte Betragsfunktion ist mit einem Programm nachzubilden.
(als positiver Wert bleibt ,negativer wird positiv so weit hab ichs gerafft)

!Es dürfen keine Schlüsselwörter if und case noch die Methoden Math.abs() oder math.sqrt() verwendet werden!

Alle andern Aufgaben hab ich eigenständig gelöst.....is nur 1 Punkt von 17 also was solls....der Ehrgeiz hatte mich gepackt aber gebe frustriert auf...
 
Zuletzt bearbeitet:
Der Code wird dich nicht ans Ziel bringen.
Was passiert, wenn du 6 eingibst? Die Schleife wird übersprungen.

Du könntest noch hochkomplizierte Kontrukte mit Schleifen bauen, in denen du die Abbruchbedingung als if benutzt.

Vielleicht hilft dir der ?: Operator.
 
Die aus der Mathematik bekannte Betragsfunktion ist mit einem Programm nachzubilden.
(als positiver Wert bleibt ,negativer wird positiv so weit hab ichs gerafft)

Wenn du das geschafft hast, dann bist du doch fertig? Ich sehe irgendwie das Problem nicht.
Außerdem bin ich im Gegensatz zu Gucky schon der Meinung, dass dich dein Code ans Ziel bringt (bissle ergänzen und umstellen 😳). Wenn du das nur mit einer While Schleife machen willst, dann mach es halt so: Wenn x positiv ist, braucht er nicht in die Schleife eintreten, wenn x negativ ist, dann addierst du in jedem Schleifendurchlauf x = x + 1, und gleichzeitig auf eine zusätzliche Variable zahl = zahl + 1. Wenn x dann irgendwann 0 ist, ist zahl so groß wie dein x ohne negatives Vorzeichen. Dann einfach zahl auf x addieren, das ja inzwischen 0 ist und x ausgeben. Ich denke das war auch deine Idee, zumindest interpretiere ich das aus deinem ersten Post.

Java:
int x = InputBox.readInt("Geben Sie eine Zahl ein");

int zahl = 0;
while (x < 0) { 
zahl++;
x++;
}

x = x + zahl;
System.out.println(x);

Ansonsten wäre es eleganter so ohne Schleife, wobei das wahrscheinlich auch unter den verbotenen Operatoren fällt. Trotzdem der Vollständigkeitshalber:

Java:
int x = InputBox.readInt("Geben Sie eine Zahl ein");
 x = (x > 0) ? x : -x;
System.out.println(x);
 
Zuletzt bearbeitet:
Was soll den der blöde Hinweis mit den tenären Operator?? Das ist ein if Else äquivalent und hat hier nix zu Suchen.

Auch eine while Schleife wäre ihmo ein if Konstrukt im Sinne dieser Aufgabe. Ich meine wir hätten das mal ohne while implementiert

Ehh müsste ich googeln, wenn ich an einem PCs bin.
 
In der Aufgabe heißt es, es dürfen keine Schlüsselwörter if oder case verwendet werden.

An welcher Stelle habe ich mich nicht an die Aufgabe gehalten?
 
Was soll den der blöde Hinweis mit den tenären Operator?? Das ist ein if Else äquivalent und hat hier nix zu Suchen.

Sehe ich unter Vorbehalt auch so (habe ich ja geschrieben), geht aber nicht aus der Aufgabe hervor.

Auch eine while Schleife wäre ihmo ein if Konstrukt im Sinne dieser Aufgabe. Ich meine wir hätten das mal ohne while implementiert. Ehh müsste ich googeln, wenn ich an einem PCs bin.

Da steht nicht, dass man keine Schleifen verwenden darf. Wie du darauf kommst, das wäre ein "if-Konstrukt" im "Sinne dieser Aufgabe" ist mir schleierhaft. Es scheint mir eher gerade der Sinn zu sein, hier Schleifen zu verwenden.
 
Zuletzt bearbeitet:
So sieht die Betragsfunktion aus:
f2b4f20fa1743e6f68429ab94b270961.png


Wenn du die Math.sqrt oder Math.pow verwenden darfst, hast du gewonnen.

EDIT:

Anderer Ansatz wäre, wenn du die Signum Funktion nehmen würdest:

dfc1d6fb12e0f808a0aea0ac489b884c.png


Sieht in Java so aus:
Java:
-x>>>31 | x >> 31
Ist auch in der Integer-Klasse so definiert (Integer.signum(...)😉
 
Zuletzt bearbeitet:
nein war alles nicht erlaubt weder if case noch mathpow oder math abs also schätz ma irgendwie mit while schleife kp wie aber is auch wurscht hab ohne die b) aufgabe abgegeben der 1ne Punkt :lol:
 

Zurück
Oben