Java黑皮书课后题第7章:7.15(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值。编写一个测试程序,读取10个数,调用该方法,并显示以一个空格分隔的不同数字
生活随笔
收集整理的這篇文章主要介紹了
Java黑皮书课后题第7章:7.15(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值。编写一个测试程序,读取10个数,调用该方法,并显示以一个空格分隔的不同数字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
7.15(消除重復)使用下面的方法頭編寫方法,消除數組中重復出現的值。編寫一個測試程序,讀取10個數,調用該方法,并顯示以一個空格分隔的不同數字
- 題目
- 題目描述與運行示例
- 破題
- 代碼
- 21.11.11更改代碼
題目
題目描述與運行示例
7.15(消除重復)使用下面的方法頭編寫方法,消除數組中重復出現的值:
public static int[] eliminateDuplicates(int[] list)
編寫一個測試程序,讀取10個數,調用該方法,并顯示以一個空格分隔的不同數字
破題
代碼
import java.util.Scanner;public class Test7_15 { //1 2 3 2 1 6 3 4 5 2public static void main(String[] args) {// 1. 主方法從控制臺獲取數據,賦值給數組Scanner input = new Scanner(System.in);System.out.print("Enter 10 numbers: ");int length0 = 10;int[] lst_input = new int[length0];for (int i = 0; i < length0; i++){lst_input[i] = input.nextInt();}// 2. 調用eliminateDuplicates方法,傳入剛剛賦值完的數組int[] lst_feedback = eliminateDuplicates(lst_input);// 4. 主方法按照格式要求輸出System.out.print("The distinct numbers are: ");int temp = 0;for (int i = 0; i < 10; i++){temp = lst_feedback[i];if (temp != 0 || (i == 0 && temp == 0)){System.out.print(temp + " ");}}}public static int[] eliminateDuplicates(int[] list){int length = 10;// 計算list最大值: maxint max = 0;for (int i = 0; i < length; i++){if (max < list[i])max = list[i];}// 聲明創建一個以list最大值+1為長度的數組int[] lst_temp = new int[max + 1];// 原數組元素作為下標代入新數組,并將元素置為1for (int i = 0; i < length; i++) {lst_temp[list[i]] = 1;}// 把接收的數組list進行遍歷,list的元素代入lst_temp的下標中// 將保留的list[i]用返回數組接收int[] feedback = new int[10];int count = 0;for (int i = 0 ; i <= max ; i++){if (lst_temp[i] == 1){feedback[count] = i;count++;}}return feedback;} }21.11.11更改代碼
感謝 @MDeleter 糾錯,已經將正確代碼附上
這版代碼糾正了輸入數字最大值大于10時數組越界和輸出很多0的問題、糾正了當輸入數字有0時無法處理0的問題
總結
以上是生活随笔為你收集整理的Java黑皮书课后题第7章:7.15(消除重复)使用下面的方法头编写方法,消除数组中重复出现的值。编写一个测试程序,读取10个数,调用该方法,并显示以一个空格分隔的不同数字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java黑皮书课后题第7章:7.14(计
- 下一篇: Java黑皮书课后题第7章:7.16(执