# HILFE Programmieraufgabe mit while und if



## Scherana (15. Mai 2012)

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


----------



## Final_Striker (15. Mai 2012)

Zeig doch mal was du schon gemacht hast, wie sollen wir dir denn sonst helfen?


----------



## Scherana (15. Mai 2012)

```
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)


----------



## Volvagia (15. Mai 2012)

Am Ende fehlt noch ein System.out.println(a);, falls du das als den Fehler meinst.
btw. Klassennamen Groß und CamelCase.


----------



## Final_Striker (15. Mai 2012)

Scherana hat gesagt.:


> 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 (15. Mai 2012)

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 (15. Mai 2012)

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:


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


----------



## diggaa1984 (15. Mai 2012)

wie rufst du dein Programm auf, oder startest du aus der IDE heraus?
Dieses Argument abzufragen erfordert bei Programmstart einen Parameter anzugeben, zB.

```
java alleteilereinerzahl 10
```
 (über Konsole) .. in dem Fall würde 10 als String in args[0] liegen


----------



## Scherana (15. Mai 2012)

oh gott bin ich doof ^^ ja hab den Parameter jetzt beispielsweise mit 10 ersetzt. und dann klappts


----------



## Scherana (15. Mai 2012)

also das wäre jetzt mein fertiges ergebnis: 


```
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 (15. Mai 2012)

b ist eine Zahl und 0. Was willst du noch definieren, um sie um 1 zu erhöhen? ^^


----------



## Scherana (15. Mai 2012)

aber als ergebnis kommen mir ja die ganzzahligen teiler von a raus....


----------



## Volvagia (15. Mai 2012)

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.


----------



## Scherana (15. Mai 2012)

ich würde einfach nur gerne wissen, welche zeile oder ausdruck jetzt dafür sorgt, dass das programm die teiler rausfindet


----------



## Volvagia (15. Mai 2012)

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.


----------



## Scherana (15. Mai 2012)

ah jetzt hab ichs  boah vielen vielen dank ^^


----------



## diggaa1984 (15. Mai 2012)

Scherana hat gesagt.:


> also das wäre jetzt mein fertiges ergebnis:





Scherana hat gesagt.:


> ich würde einfach nur gerne wissen, welche zeile oder ausdruck jetzt dafür sorgt, dass das programm die teiler rausfindet



irgendwie :lol:


----------

