Doppelte Zahl suchen

volki.s89

Mitglied
Hallo zusammen,
ich muss eine Aufgabe lösen,aber mir fallen irgendwie keine Ideen mehr ein, wie ich mit der Aufgabe weiter arbeiten soll.

Also zur Aufgabe :
Ich soll ein Programm schreiben, welches mir sagen soll, ob zwei Zahlen, in einer Menge von Zahlen, den gleichen Wert haben. Wenn ja, dann soll das Programm true wiedergeben und wenn nicht, dann false.

Schonmal danke im voraus.

Zu meinem Programm:

Java:
 public class mehrfach1 {

    static boolean mehrfach(int[] a) {
        int n = a.length;
        int i = 0;
        int merker = 0;
        boolean h = false;
        while (i < n || a[merker] < n) {
            if (merker != i && a[merker] / a[i] == 1  ) {
                h = true;
                System.out.println("true");
                return h;
            } else {
                h = false;
                System.out.println("false");
                i++;
            }

            if (i == n) {
                merker = merker + 1;
                i = 0;

            }

        }
        return h;

    }

    public static void main(String[] args) {
        int[] p = {3, 7, 8, 15};
        boolean k;
        k = mehrfach(p);

        System.out.println(k);
    }
}


Ich denke das Problem liegt an dieser Stelle:

Java:
if (merker != i && a[merker] / a[i] == 1  ) {

aber egal was ich mache, ich komme irgendwie nicht weiter.
 
Zuletzt bearbeitet:

cz3kit

Bekanntes Mitglied
Hey ho, ich würde dir ja gerne helfen, aber irgendwie verstehe ich deine Aufgabe nicht. Hättest du vielleicht ein Beispiel?
 
S

SlaterB

Gast
soll
> a[merker] / a == 1
die Bedeutung von
> a[merker] == a
haben?
wieso so kompliziert?

schau dir auch folgende Ergebnisse an, vielleicht erkennst du etwas:
Java:
public class Test
{
    public static void main(String[] args)
    {
        System.out.println(10 / 9);
        System.out.println(10 / 9.0);
        System.out.println(10 / 6);
        System.out.println(10 / 5);
        System.out.println(10 / 4);
        System.out.println(10 / 3);
    }
}
 

volki.s89

Mitglied
Danke schonmal für die Antworten :)

Also:
a[merker] / a == 1

soll nicht: a[merker] == a bedeuten.

Das soll einfach nur heißen, dass a[merker] geteilt durch a = 1 ist.

Mir fällt da gerade nichts auf^^ aber ich bin ja auch ein richtiger Anfänger. Sry


Ich versuche das mal mit einem Beispiel zu verdeutlichen:

Wenn ich ein Array mit der Zahlenfolge von {5,8,12,5,16,24} habe, soll das Programm herausfinden ob in dem Array zwei Zahlen sind, die genau den gleichen Wert haben. Also in dem Beispiel wäre 5 die Zahl, weil diese Zahl ja zweimal in dem Array vorhanden ist.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
was ist denn deiner Ansicht nach der Unterschied zwischen (a[merker] geteilt durch a = 1) und (a[merker] == a)?
bzw. musst du auch nicht sagen, war ja nicht deine Idee,
andere Frage: was ist deine Intention es so zu programmieren, welchen Plan verfolgst du? welche Funktion hat diese Code-Zeile?
 
G

Gast2

Gast
Warum verwendest du nicht zwei for schleifen, dadurch wird der ganze code meiner meinung viel übersichtlicher:

Java:
    public static boolean mehrfach(int[] a) {
        for (int i = 0; i < a.length; i++) {
            for (int j = i + 1; j < a.length; j++) {
                if (a[i] == a[j]) {
                    System.out.println("true");
                    return true;
                }
            }
        }

        System.out.println("false");
        return false;
    }
 

volki.s89

Mitglied
Ohh , das mit den beiden for Schleifen klappt ja wirklich und ist auch übersichtlicher. Danke

Und an SlaterB , das mit a[merker] == a stimmt auch^^. Ich habe zu umständlich überlegt.

Aber wenn ich das so ändere, klappt das Programm immer noch nicht.
 

faetzminator

Gesperrter Benutzer
Bei EikeB's Lösung hast du aber eine sehr schlechte Laufzeit ([c]O(n^2)[/c]). Wenn du die Daten zuerst mit einem guten Sortieralgorythmus sortierst (z.B. Quicksort), hast du eine deutlich bessere Laufzeit:
Java:
public static boolean mehrfach(int... p) {
    int[] data = p.clone();
    Arrays.sort(data);
    for (int i = 1; i < data.length; i++) {
        if (data[i - 1] == data[i]) {
            return true;
        }
    }
    return false;
}
Das [c]copy()[/c] natürlich nur, damit die ursprünglichen Daten nicht modifiziert werden.
 
S

SlaterB

Gast
Und an SlaterB , das mit a[merker] == a stimmt auch^^. Ich habe zu umständlich überlegt.

und was du an meinem Testprogramm erkennen solltest, war, dass das Teilen nicht so gut ist,
int/int wird gerundet, 10/9 == 1,

was sonst noch nicht geht kann man dann in einer neuen Programmversion sehen oder eines der anderen übernehmen
 

volki.s89

Mitglied
Wie sollte denn dann meine Version mit deinem Vorschlag aussehen ?

Wenn ich das so schreibe:

Java:
 static boolean mehrfach(int[] a) {
        int n = a.length;
        int i = 0;
        int merker = 0;
        boolean h = false;
        while (i < n || a[merker] < n) {
            if (a[i] == a[merker] && merker != i   ) {
                h = true;
                System.out.println("true");
                return h;
            } else {
                h = false;
               System.out.println("false");
                i++;
            }

            if (i == n) {
                merker = merker + 1;
                i = 0;

            }

        }
        return h;


kommt die Fehlermeldung:

run:
false
false
false
false
false
false
false
false
false
false
false
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
false
false
false
false
false
false
false
false
false
false
false
false
false
false
at aufgabeZettelNr5.mehrfach1.mehrfach(mehrfach1.java:19)
at aufgabeZettelNr5.mehrfach1.main(mehrfach1.java:43)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

was bedeutet das ?
 
Zuletzt bearbeitet:

Landei

Top Contributor
Du kannst das Array sortieren, dann stehen gleiche Zahlen nebeneinander:
Java:
static boolean mehrfach(int[] a) {
   java.util.Arrays.sort(a);
   for(int i = 0; i + 1 < a.length; i++) {
      if(a[i] == a[i+1]) {
         return true;
      } 
   }
   return false;
}

[Edit] Ups, hatte faezminator ja schon vorgeschlagen...
 
Zuletzt bearbeitet:

Landei

Top Contributor
Glaub mir, mit einer Schleife wirst du nicht glücklich. Ohne Sortieren ist EikeB's Code am besten, das ist der typische "jeder-mit-jedem-Vergleich". Ich denke es ist viel sinnvoller, die funktionierenden, einfachen Varianten zu verstehen, als eine verkorkste zum Laufen zu bringen.

OT: Natürlich gibt es auch "Profi-Varianten" wie:
Java:
static boolean mehrfach(int[] a) {
   Set<Integer> set = new HashSet<Integer>();
   for(int i = 0; i < a.length; i++) {
      if(! set.add(a[i])) {
         return true;
      }  
   }
   return false;
}
... aber sowas ist für das Verständnis sicher nicht hilfreich.
 
S

SlaterB

Gast
die Exception kam ansonsten, weil merker ohne Maß mit reiner Gier erhöht wird, bis es irgendwann größer als das Array ist,
dann Exception, und Abbruch

da Exception (System.err) und System.out zwei verschiedene Streams sind, stehen die Meldungen leicht durcheinander in der Ausgabe
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
M Aufgabe: Array auf doppelte Zahl prüfen Java Basics - Anfänger-Themen 8
K Warum werden immer noch doppelte Zahlen ausgegeben ? Java Basics - Anfänger-Themen 13
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
P Doppelte werte in einer Liste zählen Java Basics - Anfänger-Themen 11
D Doppelte For Schleife / Array Java Basics - Anfänger-Themen 3
C das Doppelte des Wertes in der Console ausgeben Java Basics - Anfänger-Themen 10
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
N Best Practice Doppelte und einfach Anführungsstriche in Runtime.getruntime().exec() Java Basics - Anfänger-Themen 6
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
L Doppelte Schleife Anpassen Java Basics - Anfänger-Themen 5
W Map doppelte Values löschen Java Basics - Anfänger-Themen 3
S CSV auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 8
S Doppelte Liste Einfügen Java Basics - Anfänger-Themen 1
M Argument in Integer verwandeln und das Doppelte davon printen Java Basics - Anfänger-Themen 9
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
M Erste Schritte Doppelte Ausgabe? (JList) Java Basics - Anfänger-Themen 1
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
K Input/Output Doppelte Ausgabe Java Basics - Anfänger-Themen 5
S Erste Schritte Doppelte Ausführung? Java Basics - Anfänger-Themen 4
E Threads Doppelte Threads beenden Java Basics - Anfänger-Themen 4
J Variablen Doppelte Werte in Int Array Java Basics - Anfänger-Themen 10
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
S ArrayList Gruppieren, "Doppelte Werte" Addieren Java Basics - Anfänger-Themen 5
O Doppelte For-Scheife Java Basics - Anfänger-Themen 6
E Array doppelte Einträge Java Basics - Anfänger-Themen 2
S Variablen Array in ArrayList auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 4
M Einfache und Doppelte Operatoren Java Basics - Anfänger-Themen 3
P Doppelte Datensätze aus CSV-Datei löschen Java Basics - Anfänger-Themen 17
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
P Doppelte Einträge in eine List Java Basics - Anfänger-Themen 5
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
B Klassen Doppelte werte Filtern XML, Datenbank und DOM Java Basics - Anfänger-Themen 3
R Doppelte löschen Java Basics - Anfänger-Themen 6
C Doppelte Einträge aus String [] Array entfernen. Java Basics - Anfänger-Themen 5
K Doppelte namen bei random Java Basics - Anfänger-Themen 3
U Doppelte Interfcae Implementierung Java Basics - Anfänger-Themen 10
M doppelte Einträge Emailempfänger... Java Basics - Anfänger-Themen 35
G txt-File als DB>doppelte Einträge verhindern/Suche/... Java Basics - Anfänger-Themen 10
DerGroßeNargus Doppelte Liste initialisieren Java Basics - Anfänger-Themen 2
H Datentypen Doppelte Verkette Liste - Verständnissproblem Java Basics - Anfänger-Themen 5
T Doppelte Liste Java Basics - Anfänger-Themen 8
R Schleife Doppelte Daten löschen Java Basics - Anfänger-Themen 3
L Hilfe, doppelte Zufallszahlen Java Basics - Anfänger-Themen 13
G List suchen und doppelte rausfiltern Java Basics - Anfänger-Themen 3
T Doppelte Anführungszeichen ersetzen?? Java Basics - Anfänger-Themen 4
Luk10 Doppelte for-schleife Java Basics - Anfänger-Themen 7
P Doppelte Einträge in mehreren Textfiles finden und ausgeben Java Basics - Anfänger-Themen 8
T Array: Doppelte Charakteren löschen - Ein Lösungsversuch Java Basics - Anfänger-Themen 37
P doppelte Werte im Array ausgeben. Java Basics - Anfänger-Themen 4
J doppelte Einträge in einem Array Java Basics - Anfänger-Themen 7
-horn- Doppelte Einträge entfernen, aus Array, List oder sonstwas Java Basics - Anfänger-Themen 9
G _NUR_ doppelte Einträge in einem Array behalten Java Basics - Anfänger-Themen 3
J Doppelte Integer aus einem Array entfernen - seltsames Prob. Java Basics - Anfänger-Themen 5
G doppelte Einträge im String Array löschen Java Basics - Anfänger-Themen 21
C Doppelte Punktnotation Java Basics - Anfänger-Themen 2
0 ArrayList - doppelte Einträge entfernen? Java Basics - Anfänger-Themen 9
S Methode, um doppelte Einträge in Array zu finden Java Basics - Anfänger-Themen 5
F doppelte Elemente in HashSet Java Basics - Anfänger-Themen 5
G java.util.LinkedList: Doppelte Elemente vermeiden Java Basics - Anfänger-Themen 5
G Wie doppelte Einträge in ComboBox vermeiden ? Java Basics - Anfänger-Themen 9
M Doppelte Einträge in einer datei löschen(nach timestamp)! Java Basics - Anfänger-Themen 4
D Doppelte Einträge einer Liste löschen Java Basics - Anfänger-Themen 6
B 2 ELists vergleichen und doppelte Einträge löschen Java Basics - Anfänger-Themen 11
S "doppelte" if-Anweisung Java Basics - Anfänger-Themen 10
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
F Doppelte Datensätze zusammenziehen Java Basics - Anfänger-Themen 2
V Doppelte Zahlen bei Lotto verhindern Java Basics - Anfänger-Themen 11
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
B Überprüfung dass Zahl nur aus 0,1 besteht Java Basics - Anfänger-Themen 2
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
B 49-bit-zahl mit genau 6 Einsen bauen? Java Basics - Anfänger-Themen 21
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
M Java Ausgabe der höchsten Zahl Java Basics - Anfänger-Themen 14
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
M zahl raten Java Basics - Anfänger-Themen 1
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
I Zahl aufrunden (Zeit) Java Basics - Anfänger-Themen 43
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
R Fortlaufende Zahl Java Basics - Anfänger-Themen 3
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47

Ähnliche Java Themen

Neue Themen


Oben