Forum: PC-Programmierung Java Arraystring vergleichen


von JavaNeuling (Gast)


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 !

von JavaNeuling (Gast)


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.

von Christian (Gast)


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");

von JavaNeuling (Gast)


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
}

von Christian (Gast)


Lesenswert?

JavaNeuling schrieb:
> if (z=true){
>   System.out.println("Paar Existiert");
> } else {
>   System.out.println("Paar Existiert nicht");
> }

Mit if(z=true) wird z ja auf true gesetzt. Es muss entweder if(z==true) 
oder if(z) heißen ;)

von JavaNeuling (Gast)


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 :)

von KolaPick (Gast)


Lesenswert?

Nur der Vollständigkeit halber hier ein Verweis auf die 
arrayEquals-Implementierung von JUnit:
https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/internal/ComparisonCriteria.java
Da kann man sich etwas von abschauen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.