Java Arraystring vergleichen

Gast #4377080
Lesenswert?

Hallo,

ich bin gerade an einer Übungsaufgabe und komme leider nicht weiter.

Ich erzeuge ein Array mit einer gewünschten Länge zwischen 4 und 7.

Der Array soll mit String Werten gefüllt werden.
Daraufhin soll ich einen vergleich machen, ob der Array mit den gleichen 
Werten gefüllt wird.

Falls ja, -> Ausgabe "Paar Existiert"
ansonsten -> Ausgabe "Paar Existiert nicht"

Umgesetzt habe ich es so:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Arrays {

public static void main (String args []) throws NumberFormatException, 
IOException {

          BufferedReader in = new BufferedReader(new 
InputStreamReader(System.in));


          int a = 0;


          do {

            System.out.println("Array Länge eingeben");
            a = Integer.parseInt(in.readLine());

          }while(a <4 || a > 7);


          String ar [] = new String [a];

          for (int i = 0; i< ar.length ;i++){

            System.out.println("Array String Werte eingeben");
            ar [i] = in.readLine();


              }


          if (ar[i].equals(ar[i])) {
            System.out.printf("Paar Existiert");
          }
          else {
            System.out.printf("Paar Existiert nicht");
}
}
}

Leider klappt es vorne und hinten nicht. Zuerst habe ich die Variable a 
erschaffen und mit einer Do-While Anweisung einen Wert zugewiesen.
Ein Array-String ar der länge a erschaffen.
ar fülle ich mit Stringwerten über die Tastatur.
Danach ist mein Javawissen am ende :/

Danke für die Hilfe !
Gast #4377106
Lesenswert?

Habe einen kleinen Fehler unten gemacht.

1
 String ar [] = new String [a];
2
          
3
          for (int i = 0; i< ar.length ;i++){
4
            
5
            System.out.println("Array String Werte eingeben");
6
            ar [i] = in.readLine();
7
            
8
            
9
              }
10
          String[] b = ar;
11
          if (ar.equals(b)) {
12
      System.out.printf("Paar Existiert");
13
          }
14
          else {
15
          System.out.printf("Paar Existiert nicht");
Er spuckt mir immer aus, dass "Paar Existiert"

Ich möchte ja explizit wissen, ob es Doppelte Werte in dem String Array 
gibt.
wenn ich z.b. eingebe:

a
b
c
d
-> Paar Existiert nicht.

a
b
c
a
-> Paar Existiert.
Gast #4377120
Lesenswert?

Dafür darfst du nicht die beiden Arrays miteinander vergleichen, sondern 
jedes Element einzeln. Sollte dann in etwa so aussehen:
1
boolean paarexistiert;
2

3
for(int i=0; i<ar.length; i++) {
4
for(int j=i+1; j<ar.length; j++) {
5
if(ar[i] == ar[j]) {
6
paarexistiert = true;
7
}
8
}
9
}
10

11
if(parexistiert) System.out.println("Paar existiert");
12
else System.out.println("Paar existiert nicht");
Gast #4377156
Lesenswert?

Danke, da es sich ja um ein Array handelt, muss ich ja jeden einzelnen 
Schritt mit einer For Schleife vergleichen. Wenn ich den String einfach 
vergleiche, ist es ja logisch, dass er mir einfach sagt, jup, Paar 
Existiert.
Habe es jetzt einmal umgewandelt, mit deinem Lösungsvorschlag.

Unterschiedliche Werte eingeben. Er spuckt mir weiterhin aus, dass 
"Paar" Existiert, obwohl ich Werte wie
a
b
c
d
eingetragen habe :/
1
String ar [] = new String [a];
2
          
3
          for (int i = 0; i< ar.length ;i++){
4
            
5
            System.out.println("Array String Werte eingeben");
6
            ar [i] = in.readLine();
7
           
8
            
9
              }
10
         boolean z;
11
         for(int i=0; i<ar.length; i++) {
12
         for(int j=i+1; j<ar.length; j++) {
13
           if(ar[i].equals(ar[j])) {
14
           z = true; 
15
          
16
         }    
17
        
18
          }
19
       }     
20
if (z=true){ 
21
  System.out.println("Paar Existiert");
22
} else {
23
  System.out.println("Paar Existiert nicht");
24
}
Gast #4377187
Lesenswert?

Ah wow,

ich habe nämlich oben
1
boolean z;
2
         for(int i=0; i<ar.length; i++) {
3
         for(int j=i+1; j<ar.length; j++) {
4
           if(ar[i].equals(ar[j])) {
5
           z = true;
einfach nur z initialisiert und z später gleich true gesetzt.

Muss z = false setzten.

so sieht der code jetzt aus:
1
public class Arrays {
2
  
3
public static void main (String args []) throws NumberFormatException, IOException {
4
          
5
          BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
6
          
7
         
8
          int a = 0;
9
          
10

11
          
12
          do {
13
            
14
            System.out.println("Array Länge eingeben");
15
            a = Integer.parseInt(in.readLine());
16
            
17
          }while(a <4 || a > 7);
18
          
19
          
20
          String ar [] = new String [a];
21
          
22
          for (int i = 0; i< ar.length ;i++){
23
            
24
            System.out.println("Array String Werte eingeben");
25
            ar [i] = in.readLine();
26
           
27
            
28
              }
29
         boolean z = false;
30
         for(int i=0; i<ar.length; i++) {
31
         for(int j=i+1; j<ar.length; j++) {
32
           if(ar[i].equals(ar[j])) {
33
           z = true; 
34
          
35
         }    
36
        
37
          }
38
       }     
39
if (z){ 
40
  System.out.println("Paar Existiert");
41
} else {
42
  System.out.println("Paar Existiert nicht");
43
}
44
}
45
}

Danke für die Hilfe.

Jetzt versuche ich mich daran, es als Methode zu schreiben :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren