1

私はここで途方に暮れています。

ユーザーが 10 個の数字を入力し、それらを配列に配置し、入力された数字が一意であると判断できるようにする必要があるこの宿題があります。

これが今の私のワークフローです: 数値を入力 > 数値が以前に入力されていない場合は、配列に格納します。番号が以前に入力されている場合は、無視>入力された番号を表示>固有の番号を表示

例: 1 2 3 5 1 2 4 6 と入力すると、固有の番号が検索され、「1 2 3 4 5 6」と表示されます。

これまでのところ、私のコードは次のようになります。

public class HwChapter6 {
    public static void main(String[] args) {
        java.util.Scanner input = new java.util.Scanner(System.in);

        int[] count = new int[10];
        int number = 0;
        int x = 0;
        boolean unique = false;
        int length = count.length;
        System.out.println("Insert 10 single digit numbers in any order your heart desires:");
        for (int i = 0; i < count.length; i++) {
            count[i] = input.nextInt();
            number = count[i];
            for (int j = 0; j < count.length; j++) {

助けてくれてありがとう。

4

4 に答える 4

2

入力値の配列の代わりに、それらをSetofに入れますIntegers。セットは、定義上、一意の値のみを格納します。3 つの 'foos' を追加すると、セット内の 'foo' は 1 つだけになります。

// Add this to your top-level loop
Set<Integer> uniqueValues = new TreeSet<Integer>;
uniqueValues.add(number);

// Add this after the loop to write all unique values on one line
for (Integer value : uniqueValues) {
  System.out.print(value.toString() + " ");
}

// Now end the line.
System.out.println();
于 2013-09-19T02:09:40.133 に答える
1

すべての数値を配列に格納します。格納された数値ごとに:数値が前に挿入されたかどうかを確認し、それをブール配列に保存します。ブール配列でマークされていないすべての数値を出力します。

java.util.Scanner input = new java.util.Scanner(System.in);

int[] numbers = new int[10];
boolean[] usedBefore = new boolean[10];

// Insert all numbers
for (int i = 0; i < numbers.length; i++) {
    // Read number from console
    numbers[i] = input.nextInt();

    // Check if number was inserted before
    usedBefore[i] = false;
    for(int k = 0; k < i; k++) {
        if(numbers[k] == numbers[i]) {
            usedBefore[i] = true;
            break;
        }
    }
}

// Print all numbers that were not inserted before
for(int j = 0; j < numbers.length; j++) {
    if(!usedBefore[i]) {
        System.out.print(String.valueOf(numbers[j])+" ");
    }
}
于 2013-09-19T02:29:30.417 に答える