2016-11-16 8 views
1

私はコンストラクタに入っている情報の転送に取り掛かりました。どのように正しく行うには? :)コンストラクタへの情報の転送

は、私はいくつかのドキュメントを検討しようとしましたが、また、どのように私の場合のうちからこれらの「Fさん」を置く:( 何かを見つけることがありますか?

(位置からbinarySearchまで)

あなたの問題のため
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); 



     } 



    } 
+1

何が問題なのですか?あなたはあなたの "if"から "f = .."を取り出すことはできません – XtremeBaumer

+0

あなたはどんなクラスを作ろうとしていますか? – bradimus

+0

if(folge == 1){...} if(folge == 2){...}などの代わりに、switch-statementを使うことができます: 'switch(folge){case 1:..ブレーク;ケース2:...休憩。 } 'を使用するか、マップベースのアプローチを使用します(これはおそらく現在は範囲外です)。 – Thomas

答えて

0

のいずれかint[] f = new int[0];int[] f;を交換するか、このように他の追加:

else{ 
    f=new int[0]; 
} 

今は必要に応じて動作するはずです。実際に出力を得るにはSystem.out.println(binarySearch(f, key, 0, f.length - 1));

+0

これはうまくいきました!なぜそれがint位置= binarySearch(f、キー、0、f.length -1) ;?ドキュメントでは、そのような方法で値を転送しました:) – Suikoden

+0

コードはうまく動作しますが、決して印刷しません。また、使用するすべての変数を初期化する必要があります。 ifsでのみ初期化すると、変数が初期化されない可能性があります。したがって、elseを追加するか、開始値で初期化してから上書きしてください – XtremeBaumer

関連する問題