Ich muss folgende Aufgabe lösen:
Ergänzen Sie die Klasse Schleifentest um eine Methode zweierPotenz() der eine positive
ganze Zahl n < 30 übergeben werden kann. Die Methode soll die 2er-Potenz 2n berechnen
und zurückgeben. Falls eine negative Zahl übergeben wird, soll sie 0 zurückliefern.
Hinweis: Die 2er-Potenz soll mit n-fachen Produkt 2*2*2*2 … *2 berechnet werden.
Die Bedingung in der while Schleife muss zahl < 30 sein aber beim rest komm ich einfach nicht weiter.
Ich bin dankbar für jede Hilfe!
selber keine idee? is ja deine hausaufgabe...
so als wink mit dem zaunpfahl: wenns schon um ne schleife geht und ihrs mit dem n-Fachen Produkt berechenen sollt... solltest du mal so grob in die richtung n Schleifendurchläufe tenidieren... und dann vielleicht noch irgendwas mit *2 machen...
Ich hab bis jetzt noch keinen code macht auf wenig Sinn damit anzufangen wenn nicht weiss wie man die Aufgabe lösen soll.
Ich bin auch ehrlich gesagt etwas überfordert mit der Aufgabe vor allem bei diesem Teil : "Die 2er-Potenz soll mit n-fachen Produkt 2*2*2*2 … *2 berechnet werden." hab ich keine Ahnung wie ich das im java code umsetzen könnte.
Ich bin auch ehrlich gesagt etwas überfordert mit der Aufgabe vor allem bei diesem Teil : "Die 2er-Potenz soll mit n-fachen Produkt 2*2*2*2 … *2 berechnet werden." hab ich keine Ahnung wie ich das im java code umsetzen könnte.
Mich würde hier vor allem erst mal interessieren, ob du - auch ohne das in Code umzusetzen - verstehst, was die Aufgabe von dir will. Ich versteh die Aufgabenstellung nämlich nicht so richtig, ehrlich gesagt. Kannst du das mal in eigenen Worten wiedergeben?
"Ergänzen Sie die Klasse Schleifentest um eine Methode zweierPotenz() der eine positive
ganze Zahl n < 30 übergeben werden kann"
= Bedingung soll n < 30 sein
"Die Methode soll die 2er-Potenz 2n berechnen
und zurückgeben. Falls eine negative Zahl übergeben wird, soll sie 0 zurückliefern.
Hinweis: Die 2er-Potenz soll mit n-fachen Produkt 2*2*2*2 … *2 berechnet werden."
= Wir haben die zahl i = 2. Dieser zahl soll vom benutzer ein Exponent übergeben werden.
Wenn der benutzer die zahl 4 z.b. übergibt. soll die methode 2*2*2*2 berechnen.
Wenn eine negative zahl übergeben wird soll 0 zurückgegeben werden.
Okay, hab verstanden und mir grad mal den Code aufgeschrieben.
Folgende Idee:
Hau mal ein int exponent in deinen Code, das ist die Variable, die vom Anwender beschrieben wird (darauf gehe ich jetzt mal nicht ein, weil das ja grad nicht das Problem ist, denke ich). Setz die einfach mal auf 4 oder 5 oder wie oft du die Zahl 2 eben potenziert haben möchtest. Jetzt überleg dir mal ein paar Fälle:
- Was muss das Ergebnis sein, wenn der Exponent 1 ist?
- Was, wenn der Exponent 2 ist, was, wenn er 3 ist?
- Und wie muss dann schließlich die Abbruchbedingung für die Schleife aussehen? (Hier meine ich NICHT deine "n < 30"-Bedingung, das ist ja eine andere Baustelle und gehört zur Benutzereingabe.)
also wenn tatsächlich die schleife dein problem ist:
Java:
int potenz =2;for(int i =1; i < n; i++){
potenz = potenz *2;}
die Schliefe funktioniert für die Exponenten 1 bis so hoch das ein Integeroverflow rauskommt, für 0 und kleiner und für deine Bedingung das es nur für Exponenten bi 30 funtionieren soll, musst du dir halt noch was überlegen (-> if-Anweisung zum Beispiel...)
also wenn tatsächlich die schleife dein problem ist:
Java:
int potenz =2;for(int i =1; i < n; i++){
potenz = potenz *2;}
die Schliefe funktioniert für die Exponenten 1 bis so hoch das ein Integeroverflow rauskommt, für 0 und kleiner und für deine Bedingung das es nur für Exponenten bi 30 funtionieren soll, musst du dir halt noch was überlegen (-> if-Anweisung zum Beispiel...)
publicintzweierPotenz(int n){int potenz =2;for(int i =1; i < n && n <30; i++){
potenz = potenz *2;}{return(potenz);}}
Da fehlt noch die Anweisung, dass die methode 0 ausgeben soll, wenn man ne negative zahl eingibt aber das bekomm ich auch noch selbst hin. das meiste von dem code kommt von euch und ich muss mir die geschichte mit den Schleifen einfach nochmal anschauen, damit ich solche Aufgaben in Zukunft auch alleine hinbekomme. Danke nochmal!
Ich merk grad, dass die methode mir immer ne 2 ausgibt wenn ich für n eine zahl die grösser als 30 ist eingebe.
Wieso ist das so? wo ist da de Fehler in der Bedingung?
Ganz einfach: Vor Beginn der Schleife legst du fest, dass potenz 2 sein soll. Die Größe von n wird beim Betreten der Schleife abgefragt, wenn n > 30 ist, wird die Schleife nicht betreten und dann landest du direkt bei return potenz. Und das ist dann eben 2.