Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0



  • class Sortieren
    {
    
        public static void main( String[] argv )
        {
        	double[] feld = new double[argv.length];
    	for(int i=0; i<argv.length; ++i)	
    		feld[i] = Double.parseDouble(argv[i]);
    
    	//groesstes Element bestimmen
    	double maxvalue = feld[0];	// Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Sortieren.main(Main.java:12)
    
    	for(int i=1; i<argv.length; ++i)
    		if(feld[i] > maxvalue)
    			maxvalue=feld[i];		
    
    	for(int i=0;i<argv.length; ++i)	
    		System.out.println(feld[i]);
    
        }
    }
    

    Warum verusacht die Zeile

    double maxvalue = feld[0];	// Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Sortieren.main(Main.java:12)
    

    einen overflow?



  • Verstehst du nicht, was du da geschrieben hast? Es hängt von den Programmparametern ab, wie groß das Array wird und bei einem Array mit der Größe 0 ist es etwas schwierig, auf das erste Element zuzugreifen.



  • Außerdem steht in deiner for schleife ++i, heißt i wird zuerst incrementiert (oder irre ich da?) beim schreiben in ein array[i] fängt er an bei array[1] -> array[0] leer ...



  • Bei array[1] fängt er nicht wegen ++i an, sondern weiter unten wegen i = 1. Aber so weit kommt er ja gar nicht erst.


Anmelden zum Antworten