0

ここでの問題は、ユーザーが「-1」を入力したときに、配列の最大長を取得する必要がないように、プログラムにループを停止/整数の要求を停止させたいことです。

import java.util.Scanner;
public class DELETE DUPLICATES {
public static void main(String[] args) {
        UserInput();
        getCopies(maxInput);
        removeDuplicates(maxInput);
}
static int[] maxInput= new int[20];
static int[] copies = new int[20];
static int[] duplicate = new int[20];
//get user's input/s    
public static void UserInput() {
  Scanner scan = new Scanner(System.in);
        int integer = 0;
        int i = 0;
  System.out.println("Enter Numbers:  ");
        while(i < maxInput.length)
        {
                integer = scan.nextInt();         
                maxInput[i] = integer;
                        i++; 
                        if (integer == -1) 
                            break;  
        }
                  int j = 0;
        for(int allInteger : maxInput) {
                System.out.print(allInteger+ "  ");
                j++;
        }
}
//to get value/number of copies of the duplicate number/s
public static void getCopies(int[] Array) {
   for(int allCopies : Array) {
    copies[allCopies]++;
}

for(int k = 0; k < copies.length; k++) {
    if(copies[k] > 1) {
        System.out.print("\nValue " + k  + " : " +  copies[k] + " copies are detected");

    }
        }
        }
//remove duplicates
public static void removeDuplicates(int[] Array) {
 for(int removeCopies : Array) {
     duplicate[removeCopies]++;
    }

    for(int a = 0; a < duplicate.length; a++) {
        if(duplicate[a] >= 1) {
            System.out.print("\n"+a);

        }
            }
  }
 }

例: 入力した場合: 1 2 3 3 4 5 -1

 The result of our program is : 1  2  3  3  4  5  -1  0  0  0  0  0  0  0  0  0  0  0  0  0
 We want the result to be like: 1  2  3  3  4  5

あなたの助けが必要です。プログラミングを練習する 1 つの主題

4

3 に答える 3

1

必要な値を出力するためだけに、次の変更を行うことができます。

for(int allInteger : maxInput)  
{
    if(allInteger == -1)
        break;

    System.out.print(allInteger+ "  ");
    j++;
}

しかし、より良い変更は、データ構造の設計と使用を再考することです。

于 2013-03-14T05:40:12.163 に答える
0

配列を使用する必要がない場合、 aCollectionには多くの利点があります。を使用しましょうList:

static int maxInputCount = 20;
static ArrayList<Integer> input= new ArrayList<>();

...

    for (int i = 0; i < maxInputCount; i++)
    {
            integer = scan.nextInt();
            if (integer == -1)
                break;
            input.add(integer);
    }
    for(int integer : input) {
            System.out.print(integer+ "  ");
    }
于 2013-03-14T05:41:58.623 に答える
0

maxInput 配列は指定されたサイズの 20 であるため、その番号はありません。int のデフォルト値を出力します。

代わりに List を使用して、最大入力および終了ループのサイズを確認できます

于 2013-03-14T05:41:14.053 に答える