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

intel.amd

Mitglied
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:
Java:
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

Top Contributor
Du darfst kein Regex nehmen richtig?
Java:
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;
}
 
Zuletzt bearbeitet:

KranzKrone

Mitglied
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

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


Java:
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.

Java:
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));
}
 
Zuletzt bearbeitet:

dayaftereh

Top Contributor
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 ;)
 

Neue Themen


Oben