inhalte aus 2 unterschiedlichen Arrays miteinander vergleichen

yeha

Mitglied
Hallo allerseits,
Vorangestellt sollte ich erwähnen, dass ich ein absoluter Anfänger bin.
Ich habe eine Frage bezüglich dem Vergleichen zweier Arrays die beide den Typ int haben..
und zwar möchte ich wissen wie ich herausfinden kann ob mindestens ein Inhalt aus dem ersten Array in dem zweiten vorkommt.

Mein Ansatz sah wie folgt aus
: public class blub
{
public static boolean blo()
{
int [] arr1={1,2,3};
int [] arr2={3,4,5};
int j=0;
int i=0;

if(arr==arr[j])
{
return true;
}
else
{
while(i<=arr1.length)
{
i++;
if(arr1==arr2[j])
{
return true;
}
while(j<=classtest2.length)
{
j++; //hier war die Fehlermeldung
if(classtest1==classtest2[j])
{
return true;
}
}
}
}
return false;
}


public static void main(String[] args)
{
System.out.println(blo());
}
}

beim compilieren wurde mir angezeigt, dass ich eine IndexOutOfBoundException bekomme, was ich allerdings auch nicht richtig verstehe, da ich dies ja eigentlich durch die 2 while-schleifen verhindert habe?
 
Du deklarierst und initialisierst nirgends die Variablen arr, classtest1 und classtest2
Und selbst wenn, dann wird dein Code immer true zurückgeben.

Statt:
int j = 0;
int i = 0;

if (arr == arr[j]) {
return true;
}

Könntest du gleich "return true;" schreiben und alles andere weglassen.
 
Zuletzt bearbeitet:
okay, danke für die schnelle Antwort. 🙂
beim abtippen habe ich einige flüchtigkeitsfehler gemacht. statt arr meinte ich arr1 und arr2 und classtest1 ist gleichzusetzten mit arr1 und classtest2 mit arr2

hier nochmal der gesamte code.. :


public class classtest
{
public static boolean blo()
{
int [] arr1={1,2,3};
int [] arr2={3,4,5};
int j=0;
int i=0;

if(arr1==arr2[j])
{
return true;
}
else
{
while(i<=arr1.length)
{
i++;
if(arr1==arr2[j])
{
return true;
}
while(j<=arr2.length)
{
j++;
if(arr1==arr2[j])
{
return true;
}
}
}
}
return false;
}


public static void main(String[] args)
{
System.out.println(blo());
}
}


auch wenn ich die erste if bedindung weg lasse, bleibt das problem dennoch das gleiche oder?
Die ArrayIndexOutOfBoundException bleibt ja weiter bestehen
 
Hey,

poste das nächste mal bitte deinen Code in den Java Tags, ist sonst schwer zu lesen. Ich habe mal das ganze mit zwei For-Schleifen gelöst, sieht meiner Meinung nach besser aus.

Java:
public class Arrax {

	public static void main(String[] args) {
		
		
		System.out.println(blo());

	}
	
	public static boolean blo() {
		
		int[] arr1 = {1,2,3}, arr2 = {3,4,5};
		
		for(int i=0; i<arr1.length; i++) {
			
			for(int j=0; j<arr2.length; j++){
				
				if(arr1[i]==arr2[j]){
					
					return true;
					
				}
			}
		}

Zu deinem Code, ich hatte am Anfang auch Probleme mit Exception, dann habe ich aus i<=arr1.lenght und i<=arr2.lenght i<arr1.lenght und i<arr2.lenght gemacht und jetzt läuft das Ganze auch.
 
ich hatte am Anfang auch Probleme mit Exception, dann habe ich aus i<=arr1.lenght und i<=arr2.lenght i<arr1.lenght und i<arr2.lenght gemacht und jetzt läuft das Ganze auch.
Das Array hat 3 Speicherplätze, beginnt aber mit dem Index 0, also 0 bis 2. Deswegen geht die Bedingung <= über die Array Grenze hinaus.
 
hallo, nochmal
ich habe noch ein ähnliches problem auf das ich gestoßen bin... und zwar was ich genau tun muss wenn ich die inhalte aus nur einem array auf seine Vielfachen überprüfen soll.
Eigentlich müsste der quellcode von jupper auch dafür funktionieren oder? Beziehungsweise verstehe ich nicht warum er das nicht tut ..
hier nochmal mein ansatz ...
Java:
 public class blu
{
    public static boolean blom(int [] values)
    {
        for(int i=0;i<values.length;i++)
        {
            for(int j=0;j<values.length;j++)
            {
                if(values[i]==values[j])
                {
                    return true;
                }
            }
        }
        return false;
    }
}
 
Erster Durchlauf: i = 0; j = 0; Beide zeigen aufs gleiche Element und das wars bereits für deine Überprüfung. Ist halt die Frage was du eigentlich erwartest als Rückgabe. Sobald er einen gleichen Wert gefunden hat bekommst du ein einen Abbruch der Methode.
 
stimmt 😀
zu lösen ist das also mit einer abhängigkeit von i oder?
ich habe nun statt j=0 geschrieben j=i+1
und jetzt klappts.
danke 🙂
 
Ich verstehe "Überprüfung auf Vielfache" halt etwas anders. Für mich bedeutet das ich gehe jeden Wert des arrays durch und zähle zB wie oft jeder vorkommt. Das klappt auf deine Weise nicht, da du einfach nur ein true bekommst sobald zwei gleiche Werte gefunden wurden.
 
Zuletzt bearbeitet:
ne ne, vielleicht habe ich mich etwas undeutlich ausgedrückt, aber genau das war die aufgabe: wenn ein wert gefunden wurde der häufiger als einmal vorkommt soll true ausgegeben werden. wenn kein wert gefunden wurde, false.
es sollte nicht gezählt werden wie häufig ein wert vorkommt.
 

Zurück
Oben