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 !
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.
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"); |
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 | }
|
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 ;)
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 :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.