第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修復(fù)以下問題,使其只能返回數(shù)組中不重復(fù)的值?

如何修復(fù)以下問題,使其只能返回數(shù)組中不重復(fù)的值?

繁花不似錦 2023-09-20 15:34:14
我有一個排序的整數(shù)數(shù)組,其中一些值重復(fù),但我想返回不重復(fù)的值。例如,我有這個:Integer[] arr = {-32735, -32735, -32700, -32645, -32645, -32560, -32560};它應(yīng)該返回值-32700。但是,結(jié)果給了我 -32560 。我的方法可能有什么問題?這是我的代碼:    Integer[] arr = {-32735, -32735, -32700, -32645, -32645, -32560, -32560};    int n = arr.length;    //to store repeating element    int[] temp = new int[1];    //if only one element return it    if(arr.length==1)    {        System.out.println(arr[0]);    }    else    {        for(int j=1; j<n-1; j++)        {   //compare current element with it's previous and subsequent            if((arr[j-1]!=arr[j]) && (arr[j]!=arr[j+1]))            {                temp[0] = arr[j];            }        }    System.out.println(temp[0]);    }
查看完整描述

4 回答

?
慕標琳琳

TA貢獻1830條經(jīng)驗 獲得超9個贊

返回 -32560 的原因是因為您嘗試使用運算符比較數(shù)字對象 ( Integer!=,這幾乎總是返回 true (因此返回最終值),因為數(shù)組中的所有整數(shù)在技術(shù)上并不相等(他們的對象引用會不同)。

您可以通過更改行來解決此問題:

if((arr[j-1]!=arr[j]) && (arr[j]!=arr[j+1]))

if(!(arr[j-1].equals(arr[j])) && !(arr[j].equals(arr[j+1])))

或者您可以將數(shù)組更改為原始數(shù)組int而不是數(shù)字類Integer

Integer[] arr = {-32735, -32735, -32700, -32645, -32645, -32560, -32560};

int[] arr = {-32735, -32735, -32700, -32645, -32645, -32560, -32560};

兩種方法都可以 - 希望這會有所幫助!


查看完整回答
反對 回復(fù) 2023-09-20
?
胡子哥哥

TA貢獻1825條經(jīng)驗 獲得超6個贊

這里的問題是您正在比較 Integer 對象實例的相等性而不是值。只需獲取您的代碼,我就會在 IDE 中針對您正在使用的比較發(fā)出警告。如果您想與原始值進行比較,最簡單的更改是將數(shù)組的聲明更改為

int[] arr = {-32735, -32735, -32700, -32645, -32645, -32560, -32560};

這樣做會產(chǎn)生預(yù)期的結(jié)果-32700

如果您想讓數(shù)組保留 Integer 對象,另一種解決方案是按照 Michael Michailidis 的建議進行操作,并在比較中使用 equals。


查看完整回答
反對 回復(fù) 2023-09-20
?
收到一只叮咚

TA貢獻1821條經(jīng)驗 獲得超5個贊

運算符對 int 類型 (x==y) 或 Integer 類 (x.equals(y)) 執(zhí)行的操作不同,以修復(fù)使用適當?shù)恼麛?shù)運算符:


public class Example {


    public static void main(String[] args) {

     int[] arr = {-32735, -32735, -32700, -32645, -32645, -32560, -32560};


        for(int j=1; j<arr.length-1; j++)

            if((arr[j-1]!=arr[j]) && (arr[j]!=arr[j+1])) 

                System.out.println("int>"+arr[j]);



    Integer[] I_arr = {-32735, -32735, -32700, -32645, -32645, -32560, -32560};


        for(int j=1; j<I_arr.length-1; j++)

            if((!I_arr[j-1].equals(I_arr[j])) && (!I_arr[j].equals(I_arr[j+1]))) 

                System.out.println("Interger>"+I_arr[j]);

    }



}


查看完整回答
反對 回復(fù) 2023-09-20
?
繁星點點滴滴

TA貢獻1803條經(jīng)驗 獲得超3個贊

     Integer[] arr = {-32735, -32735, -32700, -32645, -32645, -32560, -32560};

        int n = arr.length;

        //to store repeating element

        int[] temp = new int[1];


        //if only one element return it

        if (arr.length == 1) {

            System.out.println(arr[0]);

        } else {

            for (int j = 1; j < n - 1; j++) {   //compare current element with it's previous and subsequent

                if ((!arr[j - 1].equals(arr[j])) && (!arr[j].equals(arr[j + 1]))) {

                    temp[0] = arr[j];

                }


            }

            System.out.println(temp[0]);

        }

您的代碼現(xiàn)在正在運行。問題在于您進行的對象比較。Integer是一個對象(包裝器),而int是一個基元。==和=!在基元上效果很好,但在對象上效果不佳


查看完整回答
反對 回復(fù) 2023-09-20
  • 4 回答
  • 0 關(guān)注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號