# Ganze Zahlen in einem String Suchen und als Integer im Array wiedergeben



## intel.amd (5. Dez 2012)

Hallo miteinander,
ich bin ganz neu in Java und habe eine Aufgabe wo ich nicht weiter komme. Ich hoffe jemand kann mir weiter helfen.

*Schreibt eine Methode, die eine Zeichenkette (String) als Eingabe erhält und ein Feld (Array)  zurückgibt. Das Feld enthält positive, ganze Zahlen (int). Diese Zahlen werden gebildet aus den   Substrings der übergebenen Zeichenkette. Hierbei werden nur diejenigen Substrings als Zahlen   im Feld aufgenommen, die sich als positive, ganze Zahlen auffassen lassen. Die Substrings der  Zeichenkette sind getrennt durch ein Komma gefolgt von einem Leerzeichen.*

Folgender Code wurde mit gegeben:

```
import java.util.Arrays;

public static int[] subString(String s){
		//TODO Aufgabe
		return null;

public static void main(String[] args) {
		String testString = "-5, 20, abc, -20, defg, 45ab67, 23";


                System.out.println("Teste \""+testString+"\" mit subString() erwarte: [20,23]        
                bekomme:"+Arrays.toString(subString(testString)));
```

Vielen dank im voraus


----------



## dayaftereh (5. Dez 2012)

Du darfst kein Regex nehmen richtig?

```
public int[] subarray(String s){
   List<Integer> list = new ArrayList<Integer>();
   String[] array = s.split(",");
   for(String hit : array) {
      hit = hit.trim();
      try {  
         int i = Integer.parseInt( hit ); 
         if(i > 0) {
            list.add(i); 
         }             
      }   catch( NumberFormatException ) {
         // do nothing
      }  
   }
   int[] ia = list.toArray(new int[list.size()]);
   return ia;
}
```


----------



## Marco13 (5. Dez 2012)

http://www.java-forum.org/java-basi...44728-string-elemente-zahlen-uberpruefen.html


----------



## intel.amd (5. Dez 2012)

Leider nein.
ich habe es schon mit pattern und matches versucht. Aber die vorgabe erlaubt es nicht.


----------



## KranzKrone (5. Dez 2012)

Als ersten holste du dir die Länge einer Zeichenkette
Neue ArrayListe erstellen
Die Zahlen mit eine FOR Schleife auslesen und in das Array machen

Beim einsortieren Schauen ob die Zahl positiv ist und kein double Wert hat

ENDE


----------



## intel.amd (5. Dez 2012)

Vielen dank für die schnelle Antworten.
Nun sieht es so aus: Funktioniert auch sehr gut.



```
public class Test {


	public static void main(String[] args) {
		String testString = "-5, 20, abc, -20, defg, 45ab67, 23";
		System.out.println(Arrays.toString(subString(testString)));
	}

    public static Integer[] subString(String testString){
		List<Integer> result = new ArrayList<Integer>(); 
		for (String s : testString.split(",")) {
			if (s.trim().matches("\\d+"))
				result.add(Integer.parseInt(s.trim()));
		}
		return result.toArray(new Integer[result.size()]);
	}

}
```
[/QUOTE]

*Aber Wie mache ich es wenn ich aus diesem String nur die Größte Zahl haben möchte. Also Die Funktion sortiert ja die 20 und 23 raus, soll Sie Vergleichen und nur die 23 ausgeben.

ich wollte es so machen, aber irgendwie geht das nicht.
*

```
public static int MaxNumb (String str, int[] numbers) {
    int max=numbers[0];
    int index=0;
    for(int i=1; i<numbers.length;i++) {
      if(max<numbers[i]) { 
    max = numbers[i]; 
    index = i;
      } 
    }
    return index;

public static void main(String[] args) {
		String testString = "-5, 20, abc, -20, defg, 45ab67, 23";
System.out.println("Teste MaxNumb mit \""+testString+"\" erwarte: 23 bekomme:"+MaxNumb(testString));
}
```


----------



## dayaftereh (5. Dez 2012)

Ich würde einfach im int[] nach der Größten zahl such. Also über alle Zahlen iterieren, begonnen mit der ersten und dann prüfen ob i > max ist, wenn ja würde ich max = i und weiter suchen


----------

