关于查找数组元素数组

关于查找数组元素数组

int[] arr1= {6, 20, 22, 35, 51, 54, 59, 74, 77, 80, 87, 94, 97};我要在查找的元素是22,此时输出结果应该是22对应的下标,以及下标-1,即【2,1】

public static int[] probalistischeArray (int[] arr, int value) {

        // TODO

    int min=arr[0];

    int max=arr[0];

    int position=0;

    int a=1;

    int b=1;

    int c=1; 

    int sum=0;

    

    String Rückgabewert="[";

    for(int i=0;i<arr.length-1;i++) {

       

    if(min>arr[i]) {

    min=arr[i];

    a=a+value-min;

    

    }

    if(max<arr[i]) {

    max=arr[i];

    b=b+max-min;

    }    

    c=c+(arr.length)-1;

        sum=sum+Math.round((c/(b/a)));

        position = position+sum;

            

    }

    Rückgabewert =Rückgabewert +sum+","+(position-1);

       

    System.out.println(Rückgabewert+"]");



public static void main(String[] args) {

    int[] arr1= {6, 20, 22, 35, 51, 54, 59, 74, 77, 80, 87, 94, 97};

    probalistischeArray(arr1,22);

    

    }

 

        return new int[]{};

    }



正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,按照同学如下思路:

http://img1.sycdn.imooc.com//climg/5dd7c51709a4145307440150.jpg

由于数组是有序的,所以确定最小和最大值分别是第一个和最后一个,

数组的长度arr.length,

数组中最大值-最小值(arr[arr.length-1]-arr[0])

要查找的元素-最小值(value-arr[0])

代码如下:

http://img1.sycdn.imooc.com//climg/5dd7c61c099dcd8808650082.jpg

计算出的结果是-6,-7。

按照同学的代码,是a的值为0,所以报算术异常。

建议同学确定一下公式是否正确。

祝:学习愉快~

提问者 慕仙7354812 2019-11-22 17:17:55
老师,我在重新复制我写的代码

public static int[] probalistischeArray (int[] arr, int value) {

        // TODO

    int min=arr[0];

    int max=arr[0];    

    int a=0;

    int b=0;

    int c=0; 

    int sum=0;    

    for(int i=0;i<arr.length;i++) {      

    if(min>arr[i]) {

    min=arr[i];

    a=a+value-min;   

    }

    if(max<arr[i]) {

    max=arr[i];

    b=b+max-min;

    }    

    c=c+(arr.length)-1;

    if (b/a==0) {

     continue;   

    }else{

    if(b/a!=0) {

    sum=sum+Math.round((c/(b/a))); 

    }

    }

         

        if(sum==i) {

        System.out.println("["+i+","+(i-1)+"]");       

        }        

    } 

        return new int[]{};

    }

public static void main(String[] args) {
    	int[] arr1= {6, 20, 22, 35, 51, 54, 59, 74, 77, 80, 87, 94, 97};
    	probalistischeArray(arr1,22);
    	
    }


好帮手慕阿满 2019-11-22 10:13:37

同学你好,还是不明白同学的意思,查找数组元素以及其位置,和除法有什么关系呢?同学考虑b / a == 0的情况,为什么不考虑一下a为0的情况呢?

建议同学将同学的问题详细描述一下,比如同学的代码具体完成什么,查找数组中的元素,还是求和或者求余数之类的。另外建议同学贴代码时,贴在回答中,选择代码格式,然后再贴代码,避免贴在回复中失去代码格式。

祝:学习愉快~

  • 提问者 慕仙7354812 #1
    比如我要查找的数是22,确定22在数组中的位置需要用到这一公式:(数组中长度-1)/((数组中最大值-最小值)/(要查找的元素-最小值)) 最后输出的结果应该是 【要查找的元素在数组中的位置,要查找的元素在数组中的位置-1】 ,即【2,1】
    2019-11-22 17:15:56
好帮手慕阿满 2019-11-21 18:03:17

同学你好,首先同学的代码有问题,方法中有方法,所以会报错,最后的return new  int[]{} }应该在main方法前,如:

http://img1.sycdn.imooc.com//climg/5dd65ff909bb29bd07010488.jpg

另外如果是查找数组中元素以及位置,在probalistischeArray()方法中传入数组即要查找的元素,变量数组,使用if判断数组元素是否和要查找的元素相等,相等则输出即可,如:

http://img1.sycdn.imooc.com//climg/5dd6608b09598cf509500261.jpg

如果不是这个意思,建议同学将同学的问题详细描述一下。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕仙7354812 #1
    嗯嗯,老师我差不多是这个意思。我把代码稍作修改,也考虑到除数不能是0的情况,(我用的是if ,continue;),可是终端还是出现了除数为0的报错,不知道为什么 public static int[] probalistischeArray (int[] arr, int value) { // TODO int min=arr[0]; int max=arr[0]; int a=0; int b=0; int c=0; int sum=0; for(int i=0;i<arr.length;i++) { if(min>arr[i]) { min=arr[i]; a=a+value-min; } if(max<arr[i]) { max=arr[i]; b=b+max-min; } c=c+(arr.length)-1; if (b/a==0) { continue; }else{ if(b/a!=0) { sum=sum+Math.round((c/(b/a))); } } if(sum==i) { System.out.println("["+i+","+(i-1)+"]"); } } return new int[]{}; } public static void main(String[] args) { // Not part of the exercise but can be helpful for debugging purposes // int[] exampleArray = new int[]{6, 20, 22, 35, 51, 54, 59, 74, 77, 80, 87, 94, 97}; int[] arr1= {6, 20, 22, 35, 51, 54, 59, 74, 77, 80, 87, 94, 97}; probalistischeArray(arr1,22); }
    2019-11-22 03:44:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师