簡體   English   中英

打印不同的數字java

[英]printing distinct numbers java

我很難處理這段代碼。 代碼已完成,但輸出錯誤。 我的代碼打印輸入十個數字:1 2 3 5 6 6 8 7 4 1 它應該打印 不同的數字是: 1 2 3 5 6 8 7 4 但它沒有。 它打印: 10 10 10 10 10 7 我該如何解決?

 Here is my code: import java.util.*; public class homework1 { public static void main(String[] args){ // input from user Scanner input = new Scanner(System.in); int [] numbers = new int[10]; boolean[] distinct = new boolean[10]; System.out.println("Enter ten numbers"); for (int i=0; i<numbers.length; i++){ System.out.println("Number " + (i + 1) +": "); numbers [i] = input.nextInt(); distinct[i] = true; for(int j = 0;j<10; j++){ if(numbers[i] == numbers[j] && i != j) { distinct[i] = false; } } } int count=0; for(int j = 0;j<10; j++){ if (distinct[j]){ numbers[count]=distinct.length; count++; } } System.out.println("The number of distinct number is: "+numbers[count]); System.out.println("The distinct numbers are: "); for(int i= 0; i < 10; i++) { if(distinct[i]) { System.out.print(numbers[i] + " "); } } System.out.println(); } }

這一行:

numbers[count]=distinct.length;

將您的輸出設置為數組的長度(在這種情況下,硬編碼為 10。嘗試:

int count=0;
for(int j = 0;j<10; j++){
    if (distinct[j]){
        numbers[count]=numbers[j];
        count++;
    }
}

這會將您的輸出設置為不同的數字。

插件:查看代碼審查

這將解決您的問題。 如果您使用 HashMap,您將擁有更少的代碼。

import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

public class Test {

    public static void main(String[] args) {

        HashMap<Integer, String> distinctNumbers = new HashMap<Integer, String>();
        // input from user
        Scanner input = new Scanner(System.in);
        System.out.println("Enter ten numbers");
        for (int i = 0; i < 10; i++) {
            System.out.println("Number " + (i + 1) + ":  ");
            Integer numberEntered = input.nextInt();
            distinctNumbers.put(numberEntered, null);
        }

        System.out.println("The number of distinct number is: " + distinctNumbers.size());
        System.out.println("The distinct numbers are: ");
        Set<Integer> keys = distinctNumbers.keySet();
        for (Iterator<Integer> iterator = keys.iterator(); iterator.hasNext();) {
            Integer integer = (Integer) iterator.next();
            System.out.print(" "+ integer);

        } 
    }

}

刪除行numbers[count] = distinct.length; 這使你的輸出都是10

然后,我稍微更改您的代碼以使其正常運行:

...
int count = 0;
    for (int j = 0; j < 10; j++) {
        if (distinct[j]) {
            //numbers[count] = distinct.length; //remove it, it nonsense 
            count++;
        }
    }
// distinct number should be count, not number[count]
System.out.println("The number of distinct number is: " + count);
    ....
public static void main(String[] args) {
        int arr[] = {1,3,5,4,7,3,4,7};
        Map<Integer, Integer> frequency = new HashMap<Integer, Integer>();
        for(int i = 0; i < arr.length; i++) {
            if(frequency.containsKey(arr[i])){
                int value = frequency.get(arr[i]);
                frequency.put(arr[i], value + 1);
            }
            else {
                frequency.put(arr[i], 1);
            }
        }
        for(Map.Entry<Integer, Integer> entry : frequency.entrySet()) {
            System.out.println(entry.getKey());
        }
    }
package Chapter7;

import java.util.Scanner;

public class Exercise7_5 {

    public static void main(String[] args) {
        // Print distinct numbers

        Scanner input = new Scanner(System.in);
        int[] numbers = new int[10];

        System.out.println("Enter 10 numbers:  ");
        for (int i = 0, j = 0; i < 10; i++) {
            if (storeDistinctNumbers(j,input.nextInt(), numbers))
                j++;
        }

        for (int i = 0; numbers[i] != 0 ; i++)
            System.out.print(numbers[i] + " ");
    }

    public static boolean storeDistinctNumbers(int j, int num, int[] numbers) {
        for (int e: numbers) {
            if (e == num)
                return false;
        }
        numbers[j] = num;
        return true;    
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM