2016-11-16 6 views
1

Я застрял на передаче информации, которую я получил в конструкторе. Как это сделать правильно? :)Передача информации в конструктор

Я попытался посмотреть на некоторые документы, но не нашли ничего :( Кроме того, как поставить эти «е в» от отказа моего ИФ?

(От позиции до 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

какая именно проблема? вы не можете вытащить «f = ..» из вашего «if» s – XtremeBaumer

+0

Какой класс вы пытаетесь построить? – bradimus

+0

Вместо 'if (folge == 1) {...} if (folge == 2) {...} и т. Д. Вы могли бы использовать оператор switch:' switch (folge) {case 1: .. . ломать; case 2: ... break; } 'или использовать некоторый подход, основанный на карте (хотя на данный момент это, вероятно, не доступно). – Thomas

ответ

0

для вашей проблемы либо заменить int[] f; с int[] f = new int[0]; или добавьте еще так:

else{ 
    f=new int[0]; 
} 

теперь он должен работать как нужно. и на самом деле получить выход System.out.println(binarySearch(f, key, 0, f.length - 1));

+0

Yay, это сработало! Может ли объяснить, почему он не работает с int position = binarySearch (f, key, 0, f.length -1) • В документации они передали таким образом значения: – Suikoden

+0

ваш код работает, но вы его никогда не печатали. также вы должны инициализировать каждую переменную, которую хотите использовать. если вы инициализируетесь только в ifs, существует вероятность того, что переменная не будет инициализирована. поэтому либо добавьте else, либо инициализируйте его исходным значением, а затем перезапишите его – XtremeBaumer

Смежные вопросы