Abstand zwischen den Doppelwerten in einem Array herausfinden

Dilara_K

Mitglied
Hallo liebe Leute,
Ich habe folgendes Problem.Gegeben ist ein Array und ich muss den Abstand zwischen gleichen Werten finden und der Wert, der niedrigste Abstand zu seinem Doppelgänger hat, muss ich zurückgeben.Meine frage ist, kennt ihr Methoden, die das Lösen leichter machen würde?:(
Mein Code der noch nicht fertig ist;
Java:
int firstDuplicate(int[]a) {
  int jetzt=0;
  int wert=0;
   for(int i=0; i<a.length-1; i++){
      for(int k=i+1; k<a.length-1; k++){
         if(a[i]!=a[k]){
            jetzt++;
         }
      }
  }
 
Zuletzt bearbeitet von einem Moderator:

Dilara_K

Mitglied
@Javinner
1.Schritt: den ersten Term nehmen und mit jeder anderen Elemente im Array vergleichen. Solange sie nicht gleich sind soll ein variable hochzählen zum Beispiel "int counter".Wenn zum Beispiel in der Mitte irgendwo der Vorgang abgebrochen wird, dann sagt mir "counter " wie viel er hochgezählt hat also den Abstand.
2.Schritt: Diese Abstand soll einem anderen Variablen übergeben werden zum Beispiel "int abstand", und nun nimmt man den zweiten Element von Array und macht man das gleiche Vergleich.
3.Schritt: Jetzt nach der ganzen Vergleich von zweiten Element im Array , soll gefragt werden ob der neuer "counter" kleiner ist als unserem "abstand".Wenn ja überschreiben wir "abstand" mit neuem Wert,denn wir suchen ja den Element mit kleinstem Abstand zu seinem Doppelgänger
4. ab hier verliere ich den Faden.:confused: Ich soll ja den Element zurückgeben und nicht den Abstand selbst.
 

Javinner

Top Contributor
Dilara_K hat gesagt.:
Ich habe folgendes Problem.Gegeben ist ein Array und ich muss den Abstand zwischen gleichen Werten finden und der Wert, der niedrigste Abstand zu seinem Doppelgänger hat, muss ich zurückgeben
Kann man denn davon ausgehen, dass das besagte Array nur zwei gleiche Werte inne hat?, oder sieht das Array unter Umständen so aus, dass mehrere Doppelwerte vorkommen können?
Am Besten, du postest das Array hier, dann sehen wir weiter. Benutze bitte die Code-Tags [code=Java][/code]
 

Javinner

Top Contributor
Schön, dass du am Ball bleibst ;) Als Anreiz:
Java:
public class JavaApplication13
{

    public static void main(String[] args)
    {
        int[] value_Array_A = {1, 3, 4, 6, 8, 9, 2, 3};
        int[] value_Array_B = {4, 5, 7, 3, 2, 5, 9, 0};

        doubleNumberInArray(value_Array_A);
        doubleNumberInArray(value_Array_B);
    }

}
/** Konsolenausgabe */
Die Zahl: 3 ist doppelt
Der Abstand beträgt: 5 Felder
Die Zahl: 5 ist doppelt
Der Abstand beträgt: 3 Felder
Dann viel Erfolg!
 

Dilara_K

Mitglied
@Javinner
Danke noch mal für den Anreiz;)
ja genau es sind mehrere Arrays in dem auch mehrere doppelte werte vorkommen wie zum bespiel
a = [2, 3, 3, 1, 5, 2] hier wäre die output 3 weil zwischen dreien ist der Abstand kleiner.
Ich will aber nicht aufgeben:cool:
Nicht die Aufgabe mich sondern ich mach sie fertig;):p hahahaha
 

Robat

Top Contributor
4. ab hier verliere ich den Faden.:confused: Ich soll ja den Element zurückgeben und nicht den Abstand selbst.
Vielleicht hierzu noch einen kleinen Tipp:
Zstl. kannst du dir noch eine Variable anlegen, die sich den Wert mit dem kleinsten Abstand merkt. Wenn du dann den counter überschreibst kannst du zstl auch noch den Wert überschreiben.
Somit hast du am Ende die Zahl, die du zurückgeben musst.
 
X

Xyz1

Gast
Vielleicht etwas tricky:
Java:
import java.util.Random;

/**
 *
 */
public class Abstand {
    public static void main(String[] args) {
        new Abstand().a(new int[]{1, 2, 3, 4, 5, 1, 6, 1});
        System.out.println();
        new Abstand().a(new Random().ints(10, 1, 5).toArray());
    }

    void a(int[] a) {
        for (int i = 0; i < a.length; i++) {
            for (int j = find(a[i], i, a); j != -1; j = find(a[j], j, a)) {
                System.out.println(i + " " + j + " " + a[i] + " " + (j - i));
            }
        }
    }

    int find(int v, int i, int[] a) {
        while (++i < a.length) {
            if (v == a[i]) {
                return i;
            }
        }
        return -1;
    }
}

0 5 1 5
0 7 1 7
5 7 1 2

-> Zwischen 1 an Platz 0 und 1 an Platz 5 liegen 5,
zwischen 1 an Platz 0 und 1 an Platz 7 liegen 7,
zwischen 1 an Platz 5 und 1 an Platz 7 liegen 2 ...

Ok den Rest erspare ich euch. :D
 

Vogan1972

Mitglied
@DerWissende alter lachs - ich als blutiger anfänger bei dem die Java(9) bücher meiner bibliothek noch keine woche alt sind und ich mich auf einführungs/einsteiger niveau von chapter zu chapter hantel war dein code bewundernswert ... sehr cool

re. vlt etwas tricky - ah wirklich!? hehe
 
X

Xyz1

Gast
Freut mich, wenn ich Vogan helfen konnte.... :) Anmerkung: Vergiss die Modifizierer und vernünftige Methodennamen von a und find nich! Auch hilfreich wäre, das Zufallszahlenarray vorher mal auszugeben (das mit'm gleichen Seed möglich, so man es nicht "zwischenspeichern" möchte).
 

mrBrown

Super-Moderator
Mitarbeiter
@DerWissende alter lachs - ich als blutiger anfänger bei dem die Java(9) bücher meiner bibliothek noch keine woche alt sind und ich mich auf einführungs/einsteiger niveau von chapter zu chapter hantel war dein code bewundernswert ... sehr cool

re. vlt etwas tricky - ah wirklich!? hehe
Als Empfehlung: der "einfache" Code ist meistens besser als der, der besonders trickreich ist ;)
In dem Fall sollten die weiter oben stehenden Hinweis ausreichend sein, um das umzusetzen.
 
X

Xyz1

Gast
der "einfache" Code ist meistens besser als der, der besonders trickreich ist ;)
Kannst du das - neuerdings - beurteilen?
Was heißt trickreich? Er soll funktionieren (überdas dokumentiert sein) und den Qualitätskriterien entsprechen. Mehr nicht.
Der von dir angesprochene "einfache Code" funktioniert weder - noch ist er gut.
 

Dilara_K

Mitglied
@DerWissende Dankeschön für dein tipp sehr nett :) allerdings ich bin Anfängerin und kenne noch keine Methoden wie Random oder toArray usw. java-Bibliotheken richtig anzuwenden habe ich leider noch nicht drauf:( Ich hoffe das kommt auch bald.Ich habe das endlich bis auf eine Kleinigkeit auf meine Art und Weise fertig gekriegt. Ich habe nur folgendes Problem bei Array {1,1,2,2,1} output sollte 1 sein aber bei mir kommt 2 raus.Ich weiss ich muss irgendwo eine Zeile ändern aber wo weiss nicht mehr:confused: bei anderen Arrays funktioniert das problemlos
Java:
int firstDuplicate(int[]a) {
       int aktuellerAbstand=0;
       int vorherigeAbstand=0;
       int wertVonElement=-1;
       boolean checkUp=false;
       for(int i=0; i<=a.length; i++){  //dieser for läuft für ein ganzer Array                           
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                 for(int k=i+1; k<=a.length-1; k++){//dieser for läuft nur für ein Element
                             if(a[i]!=a[k]){
                                aktuellerAbstand++;
                             } else
                                   {
                                   wertVonElement=a[i];
                                   }
                 if(aktuellerAbstand==vorherigeAbstand){
                   wertVonElement=a[i];
                   }       
                 } //innere for-schleife endet hier
             
                 if(checkUp==false){
                                vorherigeAbstand=aktuellerAbstand;
                                checkUp=true; 
                 }
       
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
             
             if(aktuellerAbstand<vorherigeAbstand){
                     vorherigeAbstand=aktuellerAbstand;
                     wertVonElement=a[i];
                 } 
       } //die obigste for-schleife endet hier
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      return wertVonElement; 
}
 

DrZoidberg

Top Contributor
Wenn die Logik einer Methode so komplex wird, dass es schwer fällt den Überblick zu behalten, ist es sinnvoll das Ganze in mehrere Methoden aufzuteilen. Wenn unbedingt alles in eine Methode muss, dann kann man den ganzen Code hinterher wieder in eine einzige M. zurückkopieren, aber das Aufteilen hilft einem erstmal.

Du könntest zum Beispiel eine Methode schreiben, die nur für ein bestimmtes Element an index startIdx, den kleinsten Abstand findet.
static int firstDuplicate(int[] a, int startIdx)
In dieser Methode hättest du dann nur eine einzige for Schleife, nämlich die innere. Danach kannst du dann die innere Schleife entfernen und stattdessen in deiner äußeren Schleife die neue Methode aufrufen.
 
X

Xyz1

Gast
Oder so, die anzahl an Methodenparametern zu reduzieren, ist immer ganz gut....
Nachteilig auch an zu hoher Tiefe von Schleifen ist auch, dass uU gebreakt werden muss....

Und nun zum Code.... Kann den leider kaum lesen.
Und na noch: Öffnende und schließende geschweifte Klammern zu kommentieren -> nie gut, denn deren "Semantik" ist eindeutig. :D .... Aber ner Anfängerin ist das fast verzeihbar.
 

Dilara_K

Mitglied
@DrZoidberg dein Tipp ist sehr gut danke ich werde das umsetzen und so ein mal probieren;)
@DerWissende ich mach mir die Kommentare deswegen damit ich ungefähr mir das vorstellen kann wie der code Zeile für Zeile arbeitet. ich habe noch viel zu lernen:confused: Wenn ich mein code fertig schreibe und es funktioniert dann poste ich es hier. Ich lerne gerade collections vector u.s.w Ich frage mich ob sowas bei Lösung dieser Aufgabe hilfreich wäre
 

Vogan1972

Mitglied
@Dilara_K wenn du mir nicht schon um Lichtjahre voraus sein würdest hätte ich gerne weitere Aufgaben gesehen und gerne versucht sie auch für mich zu lösen... wie lange lernst du Java bereits? (ich alter Depp zwischen den Kidies und kann gerade a bisserl mehr als Hallo Welt! ausgeben, so darf und kann das nicht bleiben )

@mrBrown du hast sicher recht aber als ich den Code sah habe ich @DerWissende kurz beneidet und gehofft, wenn auch nur Hobby, mir derartiges auch mal at.hoc einfiele...
 
Zuletzt bearbeitet:

Dilara_K

Mitglied
@Vogan1972 Ich bin in der 2. Semester Medieninformatik. Angefangen habe ich das Studium ohne irgendwelche Vorkenntnisse.Wir haben in der Studium angefangen mit Hamster-Simulator zu lernen.Jede Woche mussten wir Aufgaben abgeben und wurden im Laboren durch Tutoren betreut.
http://www.java-hamster-modell.de/index2.html Du kannst auf dieser Seite den Simulator und dazugehörige Bücher kostenlos runterladen.Auf der Seite unter der Materiellen findest du noch viel mehr wie Übungsaufgaben mit Lösungen wie zum Bespiel das hier https://lms.bildung-rp.de/austausch/user/policy.php
Es gibt noch eine Seite OPEN-HPI da kannst du auch dich kostenlos registrieren und bei den Kursen Java für Anfänger und bei objektorientierte Java-programierung mitmachen alles ist kostenlos. Auf der Seite gibt es nach Erklärvideos Aufgaben online zu lösen. Dann gibt es Seiten wie Coding-Bat. Da gibt es nur Aufgaben online zu lösen.Bevor ich in die Klausur reingegangen bin habe ich dort bisschen trainiert. Bisschen anspruchsvollere Aufgaben findest du unter Codefights. Ich habe mich dort angemeldet um zu üben.Die Aufgabe die ich nicht lösen konnte stammt von dort.Nach dem du dort eine Aufgabe gelöst hast, kannst du dir die Lösung von anderen anschauen.Du kannst auch jemanden herausfordern oder gegen Firmenbots antreten :) Und dass ich im Lichtjahre voraus bin stimmt garnicht :D Ich habe auch viele Schwierigkeiten.Im Vorlesung habe ich auch erst nichts verstanden.ich habe mir sehr viel durch Youtoube-videos und tutorials und duch google selbst was beigebracht.Viel wichtiger ist dass man am Ball bleibt!! und zum schluss: "Übung macht den Meister und Probieren geht über Studieren:D"
 

Vogan1972

Mitglied
@Dilara_K ich danke dir sehr für deine Antwort(en) ... spitze, ich habe mir alles gebookmark'd und werde versuchen deinen schritten mit YT.Vids unsw zu folgen ... sehr sehr geil, von herzen danke

keine ahnung warum mich die coderei so angefixed hat - den highend gaming pc nutze ich jetzt öfter zum coden lernen (der 3 screens wegen) als zum zocken hahaha
 
X

Xyz1

Gast
Ist ganz gleich wie man lernt....
Dem einen gefallen Viedeotutorials und manch einen sogar eine langweilige Vorlesung.
hasso plattner ist auch gut. :D

Falls du noch Tipps brauchst? E'n neues Thema eröffnen!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
T Abstand zwischen zwei Zeitstempeln errechnen. Java Basics - Anfänger-Themen 3
ChackZz Abstand zwischen zwei Daten berechnen Java Basics - Anfänger-Themen 5
P Abstand zwischen zwei Punkten Java Basics - Anfänger-Themen 4
G Horizontaler Abstand zwischen Buchstaben Java Basics - Anfänger-Themen 2
M Wie kann ich hier den Abstand ausgeben? Java Basics - Anfänger-Themen 3
F Aufgabe: Abstand von einem Punkt zu einem anderen Punkt Java Basics - Anfänger-Themen 10
F Abstand zum Durchschnitt von 5 Zahlen berechnen... Java Basics - Anfänger-Themen 16
CptK Interface Bilder über Bildschirm bewegen, bis der Abstand zum vorherigen zu groß wird Java Basics - Anfänger-Themen 13
M Arrays sortieren und kleinster Abstand Java Basics - Anfänger-Themen 3
B Erste Schritte Größter Abstand von 2 Zahlen aus 3 Zahlen ausgeben Java Basics - Anfänger-Themen 6
M Kleinster Abstand berechnen (prozedural) Java Basics - Anfänger-Themen 7
M Abstand 2er Punkte (Klassen) Java Basics - Anfänger-Themen 11
F Punktpaar mit geringstem Abstand finden Java Basics - Anfänger-Themen 4
hdi formatierte ausgabe -> probleme mit tabulator abstand Java Basics - Anfänger-Themen 3
G JMenuItem Abstand Java Basics - Anfänger-Themen 2
P Abstand vom Rahmen zu Komponenten bestimmen? Java Basics - Anfänger-Themen 3
G Abstand JFrame Java Basics - Anfänger-Themen 5
G Pixel-Abstand im JPanel Java Basics - Anfänger-Themen 11
G JPanel (Abstand von links) Java Basics - Anfänger-Themen 1
O abstand vom text zum border Java Basics - Anfänger-Themen 4
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
S Längster Pfad zwischen zwei Vertices in einem Graph Java Basics - Anfänger-Themen 3
U Erste Schritte nextGaussian zwischen zwei Werten Java Basics - Anfänger-Themen 19
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
rafi072001 Assoziation zwischen Musiker und Label Java Basics - Anfänger-Themen 1
I Best Practice Saubere Verbindung zwischen API und Business Layer mit DTO's Java Basics - Anfänger-Themen 2
A Parametar übergabe zwischen Methoden Java Basics - Anfänger-Themen 26
W User zwischen Optionen wählen lassen Java Basics - Anfänger-Themen 1
I Differenz zwischen LocalDateTime Java Basics - Anfänger-Themen 4
Leo_1789 Differenz ausrechnen zwischen denn idealgewicht und denn echten Gewicht Java Basics - Anfänger-Themen 7
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
NeoLexx Zuweisungskompatibilität zwischen Vererbungsbeziehungen (Polymorphie) Java Basics - Anfänger-Themen 18
L Threads Synchronisierung zwischen threads Java Basics - Anfänger-Themen 4
N Berührung zwischen Rechtecken Java Basics - Anfänger-Themen 5
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
J Wert zwischen JFrames übergeben Java Basics - Anfänger-Themen 2
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
J Punkt auf,über,unter oder zwischen 2 Geraden Java Basics - Anfänger-Themen 14
A Kommunikation zwischen nebenläufigen Threads Java Basics - Anfänger-Themen 4
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
D Zufallszahl zwischen 10 und 99? Java Basics - Anfänger-Themen 5
J Objektzugriff zwischen disjunkten Klassen Java Basics - Anfänger-Themen 1
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
A Methoden Unterscheid zwischen public und ohne Java Basics - Anfänger-Themen 9
X Input/Output Höchste Temperaturschwankung zwischen 2 Tagen Java Basics - Anfänger-Themen 2
Bluedaishi der Monat zwischen zwei Datumsangaben Java Basics - Anfänger-Themen 15
R Threads Pause zwischen zwei Schleifen Java Basics - Anfänger-Themen 1
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
S Parameterübergabe zwischen zwei Programme Java Basics - Anfänger-Themen 4
S Erste Schritte Zwischen zwei Punkten ein Minimumpkt./Maxima finden Java Basics - Anfänger-Themen 1
K Klassen Array zwischen Klassen übergeben Java Basics - Anfänger-Themen 2
Arif OOP Die Bindung zwischen einem äußeren und einem inneren Objekt Java Basics - Anfänger-Themen 2
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
F Klassen Kommunikation zwischen Klassen Java Basics - Anfänger-Themen 4
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
P Ungerade Zahlen ausgeben lassen zwischen Spannweite zweier eingegeben zahlen Java Basics - Anfänger-Themen 6
V Zufallswert zwischen zwei Zahlen a und b Java Basics - Anfänger-Themen 12
H Datentypen Tage zwischen zwei Datums berechnen Java Basics - Anfänger-Themen 4
M Variable zwischen Klassen übergeben Java Basics - Anfänger-Themen 5
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6
F Referenzen zwischen Methoden Java Basics - Anfänger-Themen 5
B Distanz zwischen zwei Punkten Java Basics - Anfänger-Themen 4
D Suche nach der Anzahl von Zonen zwischen zwei Punkten Java Basics - Anfänger-Themen 2
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
S Unterschiede zwischen equals und contains Java Basics - Anfänger-Themen 2
S Leerzeichen zwischen zwei Zeichen im String entfernen Java Basics - Anfänger-Themen 19
N Werte zwischen Klassen austauschen Java Basics - Anfänger-Themen 1
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
Thallius Best Practice Events zwischen eigenen Klassen Java Basics - Anfänger-Themen 2
A if-Anweisung zwischen zwei Punkten Java Basics - Anfänger-Themen 1
S Erste Schritte TAB-Wechsel zwischen TextFields Java Basics - Anfänger-Themen 1
B Relativer Pfad zwischen zwei Files Java Basics - Anfänger-Themen 2
M Drag & Drop - Interaktion zwischen Java und dem OS Java Basics - Anfänger-Themen 1
S Erste Schritte Tage zwischen 2 Daten berechnen Java Basics - Anfänger-Themen 6
Z Differenz zwischen 2 Daten berechnen, ohne importiere Funktionen! Java Basics - Anfänger-Themen 10
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
S Problem bei Kollision zwischen Array-objekten! Java Basics - Anfänger-Themen 2
M Länge der Strecke zwischen zwei Punkten Java Basics - Anfänger-Themen 10
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben