# Erklärung der Zeilen 4 und 5



## David2456 (14. Dez 2015)

Hallo,
ich soll ein Programm schreiben welches prüft ob eine Zahl eine Primzahl ist. Vorgegeben ist ein Programm welches diese Aufgabe Iterative löst, ich soll nun eine rekursiv schreiben, aber habe keine Ahnung was Zeile 4 und 5 bedeutet. Könnte diese mir einer Erläutern?
Danke schonmal


```
public class Primes {

        public static void main(String[] args) {
            for (String arg : args) {
            int x = Integer.parseInt(arg);

            Out.println( x + " is " + (isPrimeIterative(x) ? "" : "not ")
                        + "prime.");
            }
        }

        public static boolean isPrimeIterative(int n) {
            if (n == 2) {
                return true;
            }
           
            if (n % 2 == 0) {
                return false;
            }
           
            for (int i = 3; i * i <= n; i += 2) {
                if (n % i == 0) {
                    return false;
                }
            }
            return true;
        }

    }
```


----------



## Joose (14. Dez 2015)

Was ist bei deinem Code Zeile 4 und 5?


----------



## David2456 (14. Dez 2015)

for (String arg : args) {
int x = Integer.parseInt(arg);


----------



## javampir (14. Dez 2015)

nun, was könnte denn parseInt heißen? wenn nicht, dann ist das ein fall für google.
die erste zeile ist eine sonderform der for-schleife. hier durchläufst du einfach alle elemente in args (das sind dann natürlich einzelne strings). in jedem schleifendurchlauf hat arg dann den wert von args[schleifendurchlauf]


----------



## Jardcore (15. Dez 2015)

Hey David2456,

deine Main Methode liefert dir als Parameter ein Array vom Typ String --> *String[] args*
Mit deiner Form der for-Schleife (auch foreach-Schleife genannt) wird dann das args Array vom Anfang bis zum Ende durchlaufen. Bei jeder Iteration(Wiederholung) bekommst du dabei den String an der aktuellen Stelle des Arrays zurück.

Äquivalent dazu wäre:

```
for(int index = 0; index < args.length; index++) {
    int x = Integer.parseInt(args[index]);
}
```



```
int x = Integer.parseInt(arg)
```
wandelt einen Zeichenkette (String) in einen Ganzzahlenwert (Integer) um. (Solange der String einen gültigen Integerwert enthält)

Beste Grüße,
Jar


----------



## David2456 (15. Dez 2015)

Danke dir Jardcore. Eine Frage noch. Das Programm funktioniert ja, aber wo wird denn die Zahl eingelesen um zu überprüfen ob es eine Primzahl ist oder nicht?


----------



## Jardcore (15. Dez 2015)

Entweder über die Console "java Program.java 1 2 3 4 5 6 7"
Oder du kannst das auch über deine IDE machen, in Eclipse kannst du zum Beispiel anhand der Run Configurations Parameter mitgeben.


----------



## David2456 (15. Dez 2015)

Da hast du schon Recht Jardcore, aber das habe ich natürlich als erstes probiert. Hat aber komischerweise nicht funktioniert, weshalb ich auch die Frage gestellt hab, weil ich dachte das das was mit den Zeilen 4 und 5 zu tun hat


----------



## Jardcore (15. Dez 2015)

Ich weiß nicht genau wo in Zeile 7 das *Out *herkommt, habe das in* System.out.println(...)* geändert und dann wie oben beschrieben über die Run Configurations Parameter übergeben und gestartet.

Ergebnis:

```
1 is prime.
2 is prime.
3 is prime.
4 is not prime.
5 is prime.
6 is not prime.
7 is prime.
```


----------



## David2456 (16. Dez 2015)

Danke Jardcore. Habs jetzt verstanden. Ich kannte die möglichkeit es direkt bei der Eingabe   java Programm Wert  noch nicht


----------



## Jardcore (16. Dez 2015)

Sehr gut, freut mich das ich helfen konnte


----------

