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

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

在 for 語句中更改數(shù)組

在 for 語句中更改數(shù)組

偶然的你 2022-05-25 16:34:12
我認為它應該在這個時候發(fā)布完整的代碼。當我試圖從 Scanner 獲取值到名為“score”的數(shù)組中時,第二個 for 語句顯示了意想不到的結果。import java.util.Scanner;public class B1546 {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        int N = input.nextInt();        int[] score = new int[N];        Max scoreMax = new Max();        double sum = 0;        for (int i=0; i<N; i++) {            score[i] = input.nextInt();        }        for (int i=0; i<N; i++) {            System.out.println(score[i]); // this show the problems            sum = sum + ((double) score[i] / scoreMax.max(score) * 100);        }        System.out.println(sum / N);    }}class Max {    int max (int[] score) {        int[] tmpArray;        tmpArray = score;        for( int i=0; i<score.length-1; i++) {            for( int j=i+1; j<score.length; j++) {                if (tmpArray[i]<tmpArray[j]) {                    int tmp = tmpArray[i];                    tmpArray[i] = tmpArray[j];                    tmpArray[j] = tmp;                }            }        }        return tmpArray[0];    }}例如,當我輸入 3 10 20 30 然后它來了 10 20 10 ...不是 10 20 30 ...我不知道是什么問題。
查看完整描述

3 回答

?
qq_花開花謝_0

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

您的 Max.max 方法更改了數(shù)組 - 以 . 開頭的 3 行int tmp =

您的問題的根源可能是不了解引用類型。 tmpArray = score不會制作數(shù)組的單獨副本score——您只有對同一個數(shù)組的兩個引用。這個概念是 Java 編程的基礎。


查看完整回答
反對 回復 2022-05-25
?
瀟瀟雨雨

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

int[]是對象,因此在 Java 中是通過引用傳遞的。當您在Max#max(int[])方法中執(zhí)行以下操作時:


int[] tmpArray;

tmpArray = score;

兩者tmpArray和score都將持有相同的引用,因此當您交換 中的值時tmpArray,score-array 也將被修改。


您必須為 , 創(chuàng)建一個新的整數(shù)數(shù)組tmpArray,然后復制這些值。最簡單的是以下兩種之一:


int[] tmpArray = score.clone();


// or:


int[] tmpArray = Arrays.copyOf(score, score.length);

我建議第二個,.clone()通常用于其他目的。


查看完整回答
反對 回復 2022-05-25
?
一只甜甜圈

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

int max (int[] score) {

    int[] tmpArray;

    tmpArray = score;

}

score是對數(shù)組對象的引用。在這里,您創(chuàng)建對現(xiàn)有數(shù)組的新引用。要修復它,只需創(chuàng)建一個新的數(shù)組對象:


int max(int[] score) {

    int[] tmpArray = Arrays.copyOf(score, score.length);

}


查看完整回答
反對 回復 2022-05-25
  • 3 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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