Array Index out of bounds - wie komm ich an die letzte zahl?

riddler16

Mitglied
Code:
class zahl1
{
public static void main(String[] args)
{
int a[]={1,2,2,66,1};
int i = 0;
int n = a.length-1;
while (i < n)
{
	if (a[i] != a[i+1]){
System.out.println("Es gibt keine");}
	else {
System.out.println("stimmt");}
	i = i+1;
}
}}

Also irgenwdie versteh ich das ganze nicht...mal glaub ich es läuft und dann versuch ichs mit anderen zahl und es klappt doch wieder nicht. waaaaruummm?
also mir is auch grad aufgefallen, das ich nicht nur weis wiei chs ans letzte array feld komme sondern auch ein falsches ergebnis bekomme wenn ich Z.B. die zweite pos mit der vorletzten vergleiche(mit anderen zahlen versteht sich) woran liegt das?
 
Was möchtest du denn mit deinem Programm machen?
So wie du es hast, vergleichst du immer nur die zwei benachbarten Werte.

So wie du das Programm momentan hast, bekommst du keine Array Index Out Of Bounds Exception. Bei mir läuft es ohne Fehler.
 
Ich glaub du hast da einen Logikfehler hinein bekommen.

In der If-Abfrage überprüfst du, ob der aktuelle Array Inhalt mit dem darauffolgenden übereinstimmt.
Sprich, die erste Position des Arrays wird mit der Zweiten verglichen, was bei deiner Beispiel Initialisierung nicht stimmen kann.

Vielleicht hilft dir die kleine Output Änderung deines Codes an der Übersicht, was du da abfragen lässt ;)

Code:
	public static void main(String[] args) {
		int a[]={1,2,2,66,1};
		int i = 0;
		int n = a.length - 1;
		while (i < n) {
			if (a[i] != a[i+1]) System.out.println("Pos "+i+" ("+a[i]+") stimmt nicht mit pos "+(i + 1)+" ("+a[i+1]+") überein");
			else System.out.println("Pos "+i+" ("+a[i]+") stimmt mit pos "+(i + 1)+" ("+a[i+1]+") überein");
			
			i = i+1;
		}

	}
 
Code:
class zahl1
{
public static void main(String[] args)
{
int a[]={1,2,3,4,5};
int i = 0;
int n = a.length;
while (i<n)
	{
		int j=1;
		while (j<n)
		{
			if(a[i] != a[j])
			{
			  System.out.println("Nein");
			  j++;
			}
			else
	        	{
			  System.out.println("Ja");
		  	  j++;
		        }	
		}	
		i++;
	}			
} 

}

hi danke schonmal für die antworten und ich glaub so wie ichs jetzt gemacht hab also mit 2 schleifen isses auf jeden fall besser.es klappt auch schon im grungenommen nur leider is halt noch ein blödes problem da und ich komm nich auf die antwort...da das ja ja auf 1 gestellt wird bei jedem schleifendurchlauf isses somit klar das bei jedem äußeren durchlauf sich die werte mindestens immer 1 mal gleichen, da i und j ja einmal immer den selben wert annehmen...und wie gesagt-ich komm nich drauf wie ich das verhindern kann.
 
Hallo!
Code:
  /**
   * 
   */
  package de.tutorials;
  
  /**
   * @author daritho
   *
   */
  public class ArrayExample {
  
      /**
       * @param args
       */
      public static void main(String[] args) {
          int a[] = {1,2,3,4};
          System.out.println(a[a.length-1]);
  
      }
  
  }

Gruss Tom
 
Zurück