Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo ich sollte eine Telefonbuch mit einer Biniären suche programmieren und bin auch eigentlich fertig, jedoch existiert ein kleiner Fehler:
Java:
import java.util.*;
public class Telefonbuchsuche extends MiniJava {
public static void main(String[] args) {
String [] a={"Basti", "Phillip", "Thomas", "Holger"," Arjen"};
int[]b={33312132,12231212,74564561,12345678,88888888};
int n =b.length;
int[] x = new int [n];
String[] y = new String[n];
for(int i=0; i<n;++i){
int j=0;
while (j<i && b[i]>x[j])++j;
for (int k = i-1;k>=j; --k)
x[k+1]=x[k];
x[j]=b[i];
y[j]=a[i];
}
System.out.println("Die sortierte Reihenfolge lautet:");
System.out.println(Arrays.toString(y));
System.out.println(Arrays.toString(x));
write("Bitte geben sie die gesuchte Telefonnummer an");
int w=read();//Telefonnummer
int n1=0;
int n2=b.length-1;
while (true){
int t = (n1+n2)/2;
int u =(n1+n2)/2;
if (w==x[t]) {System.out.println(y[t]); break;}
else if (n1==n2) break;
else if (w > x[t]) n1 = t+1;
else if (n1 < t) n2 = t-1;
else break;
}
}
}
Ich Kann auf Basti (also die erste Stelle im Array) nicht zugreifen, da null ausgeben wird. Zudem kriegt dann seine Nummer(?). Warum ist das so, und hat vielleicht jemand eine idee??
Also, was du mit diesem komplizierten Algorithmus erreichen möchtest hab ich nicht verstanden. Gib den Variablen mal vernünftige Namen, das verstehst du sonst irgendwann selbst auch nicht mehr.
Ein kleines funktionierendes Bsp.:
Java:
import java.util.Arrays;
import java.util.Scanner;
public class Telefonbuchsuche {
public static void main(String[] args) {
String[] namen = {
"Basti", "Phillip", "Thomas", "Holger", " Arjen"
};
int[] nummern = {
33312132, 12231212, 74564561, 12345678, 88888888
};
System.out.println("Die sortierte Reihenfolge lautet:");
System.out.println(Arrays.toString(namen));
System.out.println(Arrays.toString(nummern));
System.out.println("Bitte geben sie die gesuchte Telefonnummer an");
int nummer = new Scanner(System.in).nextInt();
for (int i = 0; i < nummern.length; ++i) {
if (nummer == nummern[i]) {
System.out.println(namen[i]);
}
}
}
}
Vllt. hast du ja aber noch Glück, und jemand guckt sich dein Gewurschtel da noch an.
EDIT: Ah sry, ich hab das mit der Binärsuche überlesen...