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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.