# Länge von Strings im Array vergleichen



## Tarsuinn (26. Dez 2007)

Hey, 

wie der Titel schon verrät habe ich ein problem mit dem Vergleichen der Länge von Strings in einem Array, 

Also z.b. "a","bb","ccc" soll false ergeben "ccc","bb","a" true 

hier mal der Code bis jetzt:


```
public static boolean werdenWoerterKuerzer(String[] woerter) {
        
        boolean hilfe = false;
        
        for(int i = 0; i < woerter.length; i++) {

            if(woerter[i].length() > woerter[i].length())
                
                hilfe = true;
                        
            else {
                
                hilfe = false;
            }
            
        }
        
        return hilfe;
    
    }
    
    public static void main(String[] args) {
        
//        System.out.println(hatTeiler(2,2,3));
        String[] wort = {"ccc","bb","a"};
        System.out.println(werdenWoerterKuerzer(wort));
    }
```

Hab nun das Problem das er so immer nur die Länge des selben Wortes vergleicht und das ist natürlich immer false, habe auch schon 


```
woerter[i+1].length())
```

probiert aber das gibt natürlich nen IndexoutofBounds...

Wie kann man das am besten lösen, denke der Ansatz sollte da sein?

grüße


----------



## clemson (26. Dez 2007)

so sollts funktionieren:



```
public class StringComparisonMain
{

	public static void main(String[] args)
	{
		System.out.println(werdenWoerterKuerzer(null));
		System.out.println(werdenWoerterKuerzer(new String[] {}));
		System.out.println(werdenWoerterKuerzer(new String[] { "hallo" }));
		System.out.println(werdenWoerterKuerzer(new String[] { "a", "bb" }));
		System.out.println(werdenWoerterKuerzer(new String[] { "bb", "a" }));
	}

	public static boolean werdenWoerterKuerzer(String[] strings)
	{
		// check if the array is null or empty
		if (strings == null || strings.length == 0)
			return false;

		// check if the length is 1
		if (strings.length == 1 && strings[0] != null)
			return true;

		// get the first entry of the array
		String previous = strings[0];
		
		// check if the first entry is null
		if (previous == null)
			return false;

		// iterate over all elements of array, except the first one
		for (int i = 1; i < strings.length; i++)
		{
			// get the current element and check if it is null
			String current = strings[i];
			if (current == null)
				return false;

			// compare the length of the previous element with the length of the
			// current element
			if (previous.length() <= current.length())
				return false;

			// set the current element as the previous
			previous = current;
		}
		return true;
	}

}
```


----------



## Tarsuinn (27. Dez 2007)

Dank dir, hab gerade noch eine andere und für mich günstigere Lösung gefunden (identische Strings liefern auch true):


```
public static boolean werdenWoerterKuerzer(String[] woerter) {
        
        boolean hilfe = false;
        
        for(int i = 1; i <=woerter.length -1; i++) {
            
            if(woerter[i-1].length() > woerter[i].length() || woerter[i-1].equals(woerter[i])) {
                
                hilfe = true;
                
            } else
                
                hilfe = false;
        }
        return hilfe;
    }
```

MfG


----------

