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

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

如何對兩個不同大小的數(shù)組進(jìn)行計算?

如何對兩個不同大小的數(shù)組進(jìn)行計算?

米琪卡哇伊 2023-02-23 10:44:55
我有兩個不同大小的數(shù)組,我試圖循環(huán)并對其執(zhí)行計算,但我最終得到了不正確的輸出。這是數(shù)組:int[] array1 = [5, 10, 2]int[] array2 = [11, 23, 4, 6, 5, 8, 9]    int[] array1 = {5, 10, 2};    int[] array2 = {11, 23, 4, 6, 5, 8, 9};    ArrayList<Integer> calculationsArray = new ArrayList<Integer>();    int calculations = 0;    for(int i = 0; i < array1.length; i++) {        for(int j = 0; j < array2.length; j++) {        calculations = ((array1[i] + array2[j]) % 10);    }    calculationsArray.add(calculations);    }我期待[6, 3, 6, 1, 0, 8, 1]. 4 個循環(huán)的示例計算為:(11 + 5) % 10 = 6(23 + 10) % 10 = 3(4 + 2) % 10 = 6(6 + 5) % 10 = 1但實(shí)際輸出是:[4, 9, 1]
查看完整描述

2 回答

?
德瑪西亞99

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個贊

讓我們首先談?wù)劄槭裁茨憧吹侥闼吹降摹?/p>


我在這里重新發(fā)布了您的代碼,縮進(jìn)已更改以反映嵌套:


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

    for(int j = 0; j < array2.length; j++) { // <--- This loop

        calculations = ((array1[i] + array2[j]) % 10);

    }

    calculationsArray.add(calculations);

}

讓我們來看看我在上面標(biāo)記的那個內(nèi)部循環(huán)。請注意,在循環(huán)的每次迭代中,您都設(shè)置calculations了一個新值。這會覆蓋之前計算的值,因此當(dāng)內(nèi)部循環(huán)完成運(yùn)行時, 的值calculations將等于該循環(huán)中計算的最后一個值。這就是你實(shí)際看到的原因,因?yàn)?/p>


當(dāng) 時i = 0,內(nèi)循環(huán)的最后一次計算為(array1[0] + array2[6]) % 10,即(5 + 9) % 10= 4,

當(dāng) 時i = 1,內(nèi)循環(huán)的最后一次計算為(array1[1] + array2[6]) % 10,即(10 + 9) % 10= 9,

當(dāng) 時i = 2,內(nèi)循環(huán)的最后一次計算為(array1[2] + array2[6]) % 10,即(2 + 9) % 10= 1。

嘿,看![4, 9, 1]你看到的就是你的。


下一個問題是如何解決這個問題。我認(rèn)為您在這里遇到的主要問題是雙重嵌套循環(huán)可能不是解決問題的方法。具體來說,這里的雙 for 循環(huán)將運(yùn)行array1.length×array2.length次,這遠(yuǎn)遠(yuǎn)超過您需要它運(yùn)行的次數(shù)。


所以第一個問題——循環(huán)應(yīng)該運(yùn)行多少次?好吧,您希望輸出數(shù)組的長度是兩個輸入數(shù)組中較長者的長度,即Math.max(array1.length, array2.length)倍數(shù)。你能做一個循環(huán)來計算那個數(shù)字嗎?


然后您需要處理這樣一個事實(shí),即您的循環(huán)可能需要多次循環(huán)遍歷每個輸入數(shù)組。在您給出的示例中,您將讀取array1多次的值,因?yàn)閍rray2更長,但是如果更長,您可能不得不讀取array2多次的值array1。


作為如何執(zhí)行此操作的提示,請查看當(dāng)索引變得太大時是否可以使用 mod 運(yùn)算符%環(huán)繞。


希望這可以幫助!


查看完整回答
反對 回復(fù) 2023-02-23
?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個贊

怎么樣(未優(yōu)化):


ArrayList<Integer> calculationsArray = new ArrayList<Integer>();

int calculations = 0;

int j = 0;

while (j < array2.size()) {

     for (int i = 0; i < array1.size(); i++) {

           calculations = ((array1.get(i) + array2.get(j)) % 10);

          calculationsArray.add(calculations);

     }

     j++;

}


查看完整回答
反對 回復(fù) 2023-02-23
  • 2 回答
  • 0 關(guān)注
  • 171 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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