【问题标题】:Transfer Information into constructor将信息传输到构造函数
【发布时间】: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


【解决方案1】:

对于您的问题,请将int[] f; 替换为int[] f = new int[0]; 或添加这样的 else:

else{
    f=new int[0];
}

现在它应该可以正常工作了。并实际获得输出这样做System.out.println(binarySearch(f, key, 0, f.length - 1));

【讨论】:

  • 耶,成功了!你能解释一下为什么它不适用于 int position = binarySearch (f, key, 0, f.length -1); ?在文档中,他们以这种方式转移了值:)
  • 您的代码也可以正常工作,但您从未打印过它。您还必须初始化要使用的每个变量。如果仅在 ifs 中初始化,则变量可能未初始化。因此要么添加 else ,要么用一个起始值初始化它,然后覆盖它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多