in einem Array den nächstgelegenen Wert zu einem eingabewert finden

berninator97

Mitglied
hallo zusammen,
ich möchte ein Programm schreiben, das einen double wert von der Konsole entgegennimmt und anschließend in einem Array den Wert findet, der der Eingabe am nächsten liegt.
Konkret: Ich habe ein Array mit 32 Stellen, in dem Zahlen zwischen 0 und 348,75 in einem Abstand von jeweils 11,25 gespeichert sind. Wenn ich jetzt zum Beispiel den Wert 281,25 eingebe, finde ich diesen Wert mit Array.binarySearch problemlos. Mein Ziel ist es aber, einen Wert wie 240 einzugeben und (weils der nächstgelegene Wert ist) den Indexwert von 236,25 zurück zu bekommen und von da aus weiter zu machen.
P.S.: Da ich mich noch nicht sooo lange mit Arrays beschäftige, ist meine Beschreibung wahrscheinlich nicht so präzise wie ich es gerne hätte. Aber ich hoffe, mein Problem ist trotzdem irgendwie verständlich.
 
Zuletzt bearbeitet:

Robertop

Bekanntes Mitglied
Die erste Möglichkeit, die mir gerade einfällt, ist, zum Beispiel mit einer For-Schleife durch das Array durchzugehen, die Differenz zum eingegebenen Wert zu vergleichen und sich den Index immer zu merken, wenn er kleiner geworden ist. Falls das Array sortiert ist, kannst du die Schleife dann auch unterbrechen, sobald die Differenz wieder größer wird.

Aber was genau ist denn dein Ziel? Für mich klingt das gerade so, als wäre das Problem mit einer einfachen Rechnung leichter zu lösen, als mit einem Array. :)
 

Barista

Top Contributor
Das Array ist nach meiner Meinung nicht notwendig.

Ich würde den eingegebenen Wert durch den Abstand 11,25 dividieren und dann runden.

Das ergibt den Index.

Diesen mit 11,25 multiplizieren.

Für Werte ausserhalb des Bereiches muss dann noch extra was codiert werden.
 

heSheIt

Neues Mitglied
@berninator97 Ich habe eine Vermutung... meinst du das so?

Java:
import java.util.List;
import java.util.NoSuchElementException;

public class BinSerTest {
    public static int contains(double[] list, double x, double delta) {
        if (list == null || list.length == 0) {
            throw new NoSuchElementException("");
        }
        int i = 0;
        int j = list.length / 2;
        int k = list.length - 1;
        while (true) {
            System.out.println(i + " " + j + " " + k);
            if (x + delta < list[i]) {
                return -1;
            }
            if (Math.abs(x - list[i]) <= delta) {
                return i;
            }
            if (Math.abs(x - list[j]) <= delta) {
                return j;
            }
            if (Math.abs(x - list[k]) <= delta) {
                return k;
            }
            if (x < list[j]) {
                k = j;
                j = (i + j) / 2;
                if (j == k) {
                    return -1;
                }
            } else if (x < list[k]) {
                i = j;
                j = (j + k) / 2;
                if (i == j) {
                    return -1;
                }
            } else {
                return -1;
            }
        }
    }

    public static void main(String[] args) {
        List<Double> list = List.of(5., 6., 7., 8., 9., 10., 11.);
        System.out.println(contains(list.stream().mapToDouble(Double::doubleValue).toArray(), 10, 0));
        System.out.println(contains(list.stream().mapToDouble(Double::doubleValue).toArray(), 8.5, .5));

        List<Double> list1 = List.of(5., 5.1);
        System.out.println(contains(list1.stream().mapToDouble(Double::doubleValue).toArray(), 4, .1));
        System.out.println(contains(list1.stream().mapToDouble(Double::doubleValue).toArray(), 5, .1));
        System.out.println(contains(list1.stream().mapToDouble(Double::doubleValue).toArray(), 6, .1));
    }
}
 

mrBrown

Super-Moderator
Mitarbeiter
Für den Fall von gleichen Abständen hat @Meniskusschaden ja schon eine Lösung genannt, für nicht gleichbleibende Abstände kannst du binarySearch auch nutzen wenn der Wert nicht enthalten ist. Der negative Wert gibt den Index an, an der der Wert im Array eingefügt werden müsste – der Wert, der am nächsten dran ist, ist dann der danach oder davor (musst dabei nur ein bisschen mit den Indizes spielen).
 

berninator97

Mitglied
Hallo und überhaupt erstmal vielen Dank für die schnellen Reaktionen. Ich dachte, ich warte ein paar Tage bis ich eine Antwort bekomme, auf eine solche Resonanz war ich aber nicht vorbereitet😄

Wenn es sowieso gleichbleibende Abstände sind, musst du gar nicht suchen, sondern kannst den Index auch direkt berechnen:
(int) Math.round(240.0 / 11.25)
Das sieht man mal wieder, dass ich bei solchen Gelegenheiten viel zu kompliziert denke😂. Nochmal vielen Dank für die Hilfe :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
A Elemente in einem Array Java Basics - Anfänger-Themen 5
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
O Array mit einem Zeichen vergleichen Java Basics - Anfänger-Themen 1
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
B Häufigkeit einzelner Zahlen in einem Array Java Basics - Anfänger-Themen 6
D Zufällige Auswahl aus einem angelegten Array? Java Basics - Anfänger-Themen 10
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
H Minimum in einem Array bestimmen Java Basics - Anfänger-Themen 7
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
G Methoden Methode die aus einem Array ein Index ausgibt? Java Basics - Anfänger-Themen 2
U Muster in einem Array erkennen Java Basics - Anfänger-Themen 8
Z Char Array an zufälligen stellen mit einem "x" füllen. Java Basics - Anfänger-Themen 4
J Elemente in einem 2D-Array summieren Java Basics - Anfänger-Themen 6
J String aus einem Array entfernen Java Basics - Anfänger-Themen 10
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
P Arraylist zu einem Array bringen mit Verschachtelung Java Basics - Anfänger-Themen 11
M Ist es möglich, das größte und zweitgrößte element in einem Array mit nur einer Schleife ausfindig zu machen ? Java Basics - Anfänger-Themen 19
H Objekt aus einem Array löschen Java Basics - Anfänger-Themen 1
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
B Werte aus einem Unterprogramm in ein Array schreiben Java Basics - Anfänger-Themen 2
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
F Summe in einem Array bestimmen Java Basics - Anfänger-Themen 3
D Alle Möglichkeiten, n-Anzahl aus Elementen aus einem Array zu wählen, ausgeben? Java Basics - Anfänger-Themen 23
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
E Zahlen von einem Array mit zahlen von zweitem Array vergleichen Java Basics - Anfänger-Themen 27
S Schiffe versenken - Zufallszahlen in einem Array Java Basics - Anfänger-Themen 6
Dilara_K Abstand zwischen den Doppelwerten in einem Array herausfinden Java Basics - Anfänger-Themen 20
T Schauen ob eine Ziffer in einem String-Array häufiger vorkommt Java Basics - Anfänger-Themen 8
P Input/Output Bestimmte Anzahl von Werten in einem Array an Methode übergeben Java Basics - Anfänger-Themen 2
N Methoden vorherigen Wert in einem Array lieferen Java Basics - Anfänger-Themen 8
P Aus einem Array zwei Arrays machen Java Basics - Anfänger-Themen 3
D Input/Output Array in einem String mit einem Trennzeichen verbinden Java Basics - Anfänger-Themen 17
M 2 Stellen in einem Array vergleichen und bei übereinstimmen eine davon ersetzen Java Basics - Anfänger-Themen 1
V Elemente aus einem Array mit null überschreiben Java Basics - Anfänger-Themen 4
K Compiler-Fehler Durchschnitt einer Spalte in einem 2D-Array Java Basics - Anfänger-Themen 1
A .txt Datei in einem Array speichern Java Basics - Anfänger-Themen 1
H Leere Eingabe in einem array Java Basics - Anfänger-Themen 11
B seltenes Vorkommen eines Integers in einem Array Java Basics - Anfänger-Themen 13
A Frage zu einem Array Java Basics - Anfänger-Themen 14
B Methoden Element aus einem Array löschen, Rest nach vorne verschieben? Java Basics - Anfänger-Themen 4
M Bestimmen, wie oft ein Char in einem Array vorkommt Java Basics - Anfänger-Themen 2
R Anzahl von Zeichen in einem Char Array Java Basics - Anfänger-Themen 4
L Linerae Suche in einem sortierten Array Java Basics - Anfänger-Themen 2
D Alle möglichen Kombinationen in einem Array ausgeben Java Basics - Anfänger-Themen 2
Y Gleiche Arrays aus einem Array mit Objekten Java Basics - Anfänger-Themen 5
F Methoden Kontaktliste - String in einem Array suchen und ausgeben Java Basics - Anfänger-Themen 3
B Binäre Suche in einem String Array Java Basics - Anfänger-Themen 10
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
C Rekursion auf einem Array(negative werte addieren) Java Basics - Anfänger-Themen 4
W JTable mit einem JButton-Array füllen Java Basics - Anfänger-Themen 4
D SetText Ausgabe von einem Array Java Basics - Anfänger-Themen 6
F Objekte in einem Array speichern Java Basics - Anfänger-Themen 1
E Summe der "Nachbarn" eines Wertes in einem Array bestimmen Java Basics - Anfänger-Themen 8
V Zwei Array in einem kopieren Java Basics - Anfänger-Themen 3
H n Zahlen aus einem Array addieren Java Basics - Anfänger-Themen 17
V Anzahl von gleichen Werten in einem Int-Array ermitteln Java Basics - Anfänger-Themen 4
1 Minimum aller Elemente in einem Array bestimmen Java Basics - Anfänger-Themen 10
J Inhalt in einem Text-File finden und in ein Array schreiben Java Basics - Anfänger-Themen 5
A Methoden Array: ausgeben von einem Wörterbucheintrag Java Basics - Anfänger-Themen 4
J In einem Array die größte Zahl ermitteln und Faktorisieren. Java Basics - Anfänger-Themen 5
M In Testklasse einem Array Werte übergeben Java Basics - Anfänger-Themen 6
J Methoden Einzelnen Wert aus Objekt aus einem Array auslesen und danach sortieren Java Basics - Anfänger-Themen 8
S Rückgabe von einem Array Java Basics - Anfänger-Themen 7
J Speichern von Würfelwürfen in einem Array Java Basics - Anfänger-Themen 5
F Einzelne Werte aus einem Array vergleichen? Java Basics - Anfänger-Themen 8
G String einem String Array übergeben Java Basics - Anfänger-Themen 3
G Element einem Array hinzufügen Java Basics - Anfänger-Themen 7
W Elemente in einem Array nach 'oben' verschieben Java Basics - Anfänger-Themen 9
I Objekte in einem Array sortieren Java Basics - Anfänger-Themen 19
D Eine Stelle eines Char- Arrays nach dem vorkommen in einem ganzem anderem Array überprüfen Java Basics - Anfänger-Themen 20
J Einem String-Array in einer for-Schleife Strings zuweisen - Klappt nicht in einer for-Schleife Java Basics - Anfänger-Themen 5
P String Sortieren in einem Array Java Basics - Anfänger-Themen 7
D Arrays zusammenfügen und in einem Array ausgeben Java Basics - Anfänger-Themen 3
T Mehrfach auftretende Zahlen in einem Array Java Basics - Anfänger-Themen 13
N Array problem bei einem magischen Quadrats Java Basics - Anfänger-Themen 3
M eine 1 von einem 2d Array subtrahieren Java Basics - Anfänger-Themen 11
I Erste Schritte Ein Zeichen in einem Array Suchen Java Basics - Anfänger-Themen 8
C Ausgabe von einem Array Java Basics - Anfänger-Themen 5
R Aus einem 2 d array rausgreifen Java Basics - Anfänger-Themen 9
K Letzter element aus einem Array Java Basics - Anfänger-Themen 5
D Erste Schritte Warum wird bei einem Array die Länge über Length ausgegeben? Java Basics - Anfänger-Themen 6
J Alle Vorkommen eines chars in einem Array durch einen anderen char ersetzen Java Basics - Anfänger-Themen 10
P Variablen Wert vergleichen mit einem Array? Java Basics - Anfänger-Themen 13
R Teile aus einem mehrdimensionalen Array vergleichen Java Basics - Anfänger-Themen 3
B Werte aus JTextArea in einem String Array ablegen Java Basics - Anfänger-Themen 4
T OOP Objekte erzeugen und in einem Array ausgeben. Java Basics - Anfänger-Themen 2
S Zahl in einem Array farbig? Java Basics - Anfänger-Themen 6
P Array mit Zufallszahlen von einem Wuerfel Java Basics - Anfänger-Themen 15
U Lineare Suche in einem Array Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben