亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

消除數組中的重復項

消除數組中的重復項

慕桂英546537 2021-12-30 16:31:02
我有一位教授希望我們使用方法標題 Public static int[]消除重復項(int[] arr)該程序使用隨機生成的數組來查看是否存在重復但用戶對索引的數量給出了限制隨機數組有。這是我所擁有的,但它不起作用。import java.util.Random;import java.util.Scanner;public class Dublicates{    public static void main(String[] args)    {        Scanner input = new Scanner(System.in);        Random generator = new Random();        System.out.println("Enter array length: ");        int[] a = new int[input.nextInt()];        for (int i = 0; i<a.length; i++)        {            a[i] = generator.nextInt(a.length*2);        }        int[] result = eliminateDuplicates(a);        System.out.println("The new numbers are: " + result.length);        System.out.println("The double numbers were:");        for (int b : result)        {            System.out.println(b + " ");        }    }    public static int[] eliminateDuplicates(int[] arr)    {        int[] temp = new int[arr.length];        int size = 0;        for (int i = 0; i < arr.length; i++) {            if (linearSearch(temp, arr[i]) == -1) {                temp[size] = arr[i];                size++;            }            int[] result = new int[size];            for (int i = 0; i < size; i++) {                result[i] = temp[i];            }            {                return result;            }        }    }    public static int linearSearch(int[] arr, int key)    {        for(int i = 0; i<arr.length; i++)        {            if (key == arr[i])                return i;        }        return -1;    }}
查看完整描述

2 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

由于您的最終結果for的語句在循環內部,因此內部的語句for只會運行一次并且不會給出正確的答案。


因此,您必須按如下方式更改代碼。


public static int[] eliminateDuplicates(int[] arr)

{

    int[] temp = new int[arr.length];

    int size = 0;

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

        if (linearSearch(temp, arr[i]) == -1) {

            temp[size] = arr[i];

            size++;

        }

    }

    int[] result = new int[size];

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

        result[i] = temp[i];

    }


    return result;

}


查看完整回答
反對 回復 2021-12-30
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

整數數組中的默認值為 0,Random.nextInt() 可以生成 0 個隨機值,當您運行線性搜索時,0 將不會包含在最終結果數組中。我已經修改了 Random.nextInt() 以便它不會生成 0 個隨機數:


import java.util.Random;

import java.util.Scanner;

public class HelloCodiva

{

    public static void main(String[] args)

    {

        Scanner input = new Scanner(System.in);

        Random generator = new Random();


        System.out.println("Enter array length: ");

        int[] a = new int[input.nextInt()];      


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

            a[i] = generator.nextInt(a.length*2)+1;//So that 0 is not generated

        }


        int[] result = eliminateDuplicates(a);


        for (int originalValue: a){

            System.out.println(originalValue+ " ");

        }


        System.out.println("The new numbers are: " + result.length);

        System.out.println("The double numbers were:");


        for (int b : result){

            System.out.println(b + " ");

        }

}


    public static int[] eliminateDuplicates(int[] arr)

    {

        int[] temp = new int[arr.length];

        int size = 0;

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

            if (linearSearch(temp, arr[i]) == -1) {

                temp[size] = arr[i];

                size++;

            }

        }


        int[] result = new int[size];       

        System.arraycopy(temp, 0, result, 0, size);

       return result;

    }


    public static int linearSearch(int[] arr, int key)

    {

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

        {

            if (key == arr[i])

                return i;

        }

        return -1;

    }

}


查看完整回答
反對 回復 2021-12-30
  • 2 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號