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

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

復(fù)制數(shù)組的后半部分

復(fù)制數(shù)組的后半部分

哆啦的時光機 2023-10-13 14:48:57
我想創(chuàng)建一個以數(shù)組和布爾值作為參數(shù)的函數(shù)。布爾值告訴函數(shù)是否要包含數(shù)組除法的其余部分。然后它返回一個新數(shù)組,它是第一個數(shù)組后半部分的副本:secondHalf({1, 2, 3, 4, 5}, true) → {3, 4, 5}secondHalf({1, 2, 3, 4, 5}, false) → {4, 5}  對于這個作業(yè),我不應(yīng)該使用任何其他類。這是我嘗試過的:static int[] secondHalf(int[] vector, boolean include) {    int size = vector.length/2;    if(vector.length%2 == 0)        include = false;    if(include)        size ++;    int[] vector_2 = new int[size];    int i = 0;    while(i < size){        if(include)            vector_2[i] = vector[i+size-1];        vector_2[i] = vector[i+size+1];        i++;    }    return vector_2;
查看完整描述

2 回答

?
月關(guān)寶盒

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

為了找到 的大小vector_2,我決定使用復(fù)合賦值運算符。size因此,該解決方案的第一部分檢查所需的條件并在單個語句中分配一個值。


由于我們知道要迭代循環(huán)多少次,因此我認(rèn)為循環(huán)for比循環(huán)更合適while。


vector該循環(huán)檢索從數(shù)組中間到數(shù)組末尾的所有值,并將每個值放入 中vector_2。


static int[] secondHalf(int[] vector, boolean include) {

    int size = vector.length/2 + (include && vector.length%2 != 0 ? 1 : 0);

    int[] vector_2 = new int[size];


    for(int i = 0; i < size; i++)

        vector_2[i] = vector[vector.length - size + i];


    return vector_2;

}


查看完整回答
反對 回復(fù) 2023-10-13
?
瀟湘沐

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

人們已經(jīng)暗示過System#arraycopy,但是Arrays.copyOfRange還有一種更簡單的方法,您只需定義正確的起始索引并直接接收副本即可。

起始索引是array.length / 2默認(rèn)的。如果include標(biāo)志是true,那么您必須將數(shù)組長度除以 2 的余數(shù)添加到其中。

MCVE:

import java.util.Arrays;


public class ArrayPartCopy

{

? ? public static void main(String[] args)

? ? {

? ? ? ? int array0[] = { 1, 2, 3, 4, 5 };

? ? ? ? System.out.println("For " + Arrays.toString(array0));

? ? ? ? System.out.println(Arrays.toString(secondHalf(array0, true)));

? ? ? ? System.out.println(Arrays.toString(secondHalf(array0, false)));


? ? ? ? int array1[] = { 1, 2, 3, 4 };

? ? ? ? System.out.println("For " + Arrays.toString(array1));

? ? ? ? System.out.println(Arrays.toString(secondHalf(array1, true)));

? ? ? ? System.out.println(Arrays.toString(secondHalf(array1, false)));

? ? }


? ? static int[] secondHalf(int[] array, boolean include)

? ? {

? ? ? ? int start = array.length / 2;

? ? ? ? if (include)

? ? ? ? {

? ? ? ? ? ? start += array.length % 2;

? ? ? ? }

? ? ? ? return Arrays.copyOfRange(array, start, array.length);

? ? }


}

輸出是


For [1, 2, 3, 4, 5]

[4, 5]

[3, 4, 5]

For [1, 2, 3, 4]

[3, 4]

[3, 4]


查看完整回答
反對 回復(fù) 2023-10-13
  • 2 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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