HILFE Programmieraufgabe mit while und if

Scherana

Mitglied
Hallo Leute,

ich bin ganz neu bei Java und habe letzte Woche meine 4. Stunde darin abgeschlossen (studiere) und sooo wirklich blick ich da nicht durch :/ HOffe also jemand von euch kann mir helfen.
Wir sollen in der Übungsaufgabe ein Programm schreiben, dass zu einer gegeben (denke mal vom User gegebenen) Zahl alle ganzzahligen Teiler findet. Und wir sollen hierzu die "while" Schleife und die "if" Verzweigung verwenden. Als Beispiel wird hier 10 angegeben, mit den Teilern 1, 2, 5 und eben 10.

Ich verzweifle leider grad total hieran und weiß nichtmal wirklich, ob ich des alles in die while schleife setzen soll und nur einzelne Argumente mit if definieren soll, oder ganz anders :(

Ich hoffe ihr könnt mir hier helfen und ich wäre euch wirklich sehr sehr dankbar dafür :)


MFG
Scherana
 

Scherana

Mitglied
Java:
public class alleteilereinerzahl
{ 

    public static void main(String[] args) 
    { 
          int a = Integer.parseInt(args[0]); 
          int b = 0; 
       
          while (b < (a/2)) 
          { 
              b++; 
       
              if ((a%b==0)) 
              { 
                  System.out.println(b); 
              } 
           } 
    }
}

aber iwie stimmt des auch nicht :( hab gedacht ich versuch es erstmal generell, mit teilern und geh dann nochmal genauer auf die ganzzahligen ein)
 

Final_Striker

Top Contributor
aber iwie stimmt des auch nicht

Warum funktioniert doch.

Wenn a = 10 ist, dann werden 1,2 und 5 ausgegeben.

Ein Tipp: Wenn du ein Programm entwickelst, dann arbeite mit festen Zahlen anstatt mit Benutzereingaben. Erst wenn du fertig bist fügst du dir Benutzereingabe hinzu. Das erspart dir viel Zeit bei testen der Anwendung, wenn du nicht ständig was eingeben musst.
 

Scherana

Mitglied
also auch wenn ich das a auch ausgebe erscheint bei mir folgende fehlermeldung:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Alleteilereinerzahl.main(Alleteilereinerzahl.java:6)
 

Volvagia

Top Contributor
Das kommt daher, dass du keinen Parameter übergibst und args leer ist (0 Felder besitzt.) Falls du Eclipse benutzt drück oben in der Toolbar auf den schwarzen Pfeil nach unten neben den grünen Pfeil nach rechts oder dem Käfer (je nach dem ob du im Debug-Mod startest oder nicht), Run Configurations..., deine Startkonfiguration links auswählen (automatisch generiert hat sie den Klassennamen), Arguments, in Programm arguments deine Zahl eingeben.

Falls du über die Shell startest musst du die Zahl hinten dranhängen:

Code:
java datei.class 10
(Ich hoffe, das ist so richtig. Starte über die Shells normal nur jars.)
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
wie rufst du dein Programm auf, oder startest du aus der IDE heraus?
Dieses Argument abzufragen erfordert bei Programmstart einen Parameter anzugeben, zB.
Code:
java alleteilereinerzahl 10
(über Konsole) .. in dem Fall würde 10 als String in args[0] liegen
 

Scherana

Mitglied
also das wäre jetzt mein fertiges ergebnis:

Java:
public class Alleteilereinerzahl
{ 

    public static void main(String[] args) 
    { 
          int a = 76; 
          int b = 0; 
       
          while ((a/1)> b) 
          { 
              b++; 
       
              if ((a%b==0)) 
              { 
                  System.out.println(b);
              } 
           } 
    }
}

wobei ich alles kapier, bis auf die bezeichnung b++ (hab die so im inet gefunden) das bedeutet doch, wenn a größer ist als b (was bei 0 ja immer der fall ist, außer es ist 0 oder negativ) dann wird das b um 1 erhöht oder? aber b ist doch gar nicht genauer definiert?
 

Volvagia

Top Contributor
Das ist doch gut so, hat aber nichts mit "b++" zu tun. Ich verstehe den Einwand irgendwie nicht. Würde b nicht um 1 erhöht werden würde dir in der if eine Exception fliegen.
 

Volvagia

Top Contributor
Jede. ;) Alle Codezeilen sind ein Team die zusammenarbeiten um ihre Aufgabe zu erledigen. :) Geprüft, ob eine Zahl restlos durch eine andere teilbar ist wird aber in der if.
 

Neue Themen


Oben