【发布时间】:2016-11-16 23:49:26
【问题描述】:
我一直坚持将我得到的信息转移到构造函数中。如何正确执行? :)
我试图查看一些文档,但没有找到任何东西:( 另外,如何将那些“f”从我的 If 中取出?
(从位置到二进制搜索)
public class BinarySearchRecursive {
public static void main(String[] args) {
System.out.print("Bitte wählen Sie die Folge von 1 bis 5 aus: ");
Scanner eingabe = new Scanner(System.in);
int folge = eingabe.nextInt();
System.out.print("Bitte geben Sie den Suchschlüssel ein: " );
Scanner eingabe1 = new Scanner(System.in);
int key = eingabe1.nextInt();
int [] f;
if (folge == 1){
f= new int[]{20};
}
if (folge==2){
f= new int []{3,4};
}
if (folge==3){
f= new int []{1,2,3,4,5,6,7,8,9,10,11};
}
if (folge==4){
f= new int []{10,20,30,40,50,60,70,80,90,100,110};
}
if (folge==5){
f= new int [] {20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};
}
int position = binarySearch (f, key, 0, f.length -1);
}
public static int binarySearch (int [] f, int key, int intervallgrenzeLinks, int intervallgrenzeRechts){
int NO_KEY = -2;
if (intervallgrenzeLinks <= intervallgrenzeRechts){
int m = (intervallgrenzeLinks + intervallgrenzeRechts)/ 2;
if ( key == f[m]) {
return m;
} else if ( key < f[m]){
intervallgrenzeRechts = m-1;
}else {
intervallgrenzeLinks = m+1;
}
} else {
return NO_KEY;
}
return binarySearch (f, key, intervallgrenzeLinks, intervallgrenzeRechts );
}
}
【问题讨论】:
-
到底是什么问题?你不能从你的“if”中取出“f=..”
-
你要构建什么类?
-
您可以使用 switch 语句:
switch(folge){ case 1: ... break; case 2: ... break; }或使用一些基于地图的方法,而不是if (folge == 1){...} if(folge == 2) {...} etc.(尽管目前可能超出范围)。 -
我会尝试 switch case 当这最终会工作,谢谢:) 好吧,问题出在“int position = binarySearch (f, key, 0, f.length -1);” .他没有从 If 中得到“f”值。所以 binarySearch 不能正常工作 =(
-
我认为你的意思是方法/函数而不是构造函数,对吧?
标签: java