Как добавить входные номера, исключая дубликаты? - PullRequest
1 голос
/ 10 сентября 2011

Например, мои входные номера: 10 10 и 15. Второй вход будет игнорироваться, так как он уже дублирован.Таким образом, сумма будет 10 + 15 - 25. Как мне это сделать?

public class MP2A {

    public static Scanner objScan = new Scanner (System.in);
    public static void main (String []args)
    {
        double [] dNum = new double[3];

        System.out.println("Input values for your array");
        for (int iCtr=0; iCtr<dNum.length; iCtr++) {
           dNum[iCtr] = objScan.nextDouble();
        }

        double sum = 0;
        for (int iCtr=0; iCtr<dNum.length; iCtr++) {
            for (int iCtr2=0; iCtr2<dNum.length-1; iCtr2++) {
                if (dNum[iCtr2] == dNum[iCtr]) {
                   continue;
                }  
            } 
            sum+=dNum[iCtr];
        }     
        System.out.println(sum);

    }     
}

Я придумал программу выше, но она не работает.

Ответы [ 4 ]

4 голосов
/ 10 сентября 2011

Вы должны проверить класс HashSet. Вы можете поместить столько чисел, сколько захотите, в HashSet, но даже если один и тот же номер будет вставлен несколько раз, HashSet будет содержать только одно вхождение каждого уникального номера.

Редактировать: Если вам не разрешено использовать HashSet, вы можете сделать это следующим образом: Используйте ArrayList<int> (или большое int[], если вам не разрешено использовать ArrayList), чтобы сохранить трек номеров, которые были добавлены. Для каждого нового номера проверьте, существует ли номер в списке, и добавьте его в список (и к сумме) только в том случае, если его еще нет.

1 голос
/ 10 сентября 2011

Подумайте, как бы вы решили проблему с карандашом и бумагой:

  1. Получить следующий номер.
  2. Видели ли мы этот номер раньше?
  3. Если у нас есть, вернитесь к шагу 1.
  4. Если нет, то добавьте номер в список номеров, которые мы уже видели.
  5. Добавьте число к итогу.
  6. Вернитесь к шагу 1.

Теперь посмотрим, как ваш код соответствует этому простому алгоритму.

0 голосов
/ 10 сентября 2011

Добавлять входные числа в ваш массив, только если он еще не содержит его. Предполагается, что вы еще не знакомы с java.util.List (вы уже упоминали, что не знаете о множествах).

import java.util.Scanner;
public class MP2A {

    public static Scanner objScan = new Scanner(System.in);
    public static void main(String[] args) {
        double[] dNum = new double[3];

        System.out.println("Input values for your array");
        for (int i = 0; i < dNum.length; i++) {
            double num = objScan.nextDouble();
            if (contains(dNum, num) == false) {
                dNum[i] = num;
            }
        }
        double sum = 0;
        for (int i = 0; i < dNum.length; i++) {
            sum += dNum[i];
        }
        System.out.println(sum);

    }

    public static boolean contains(double[] d, double num) {
        for (int i = 0; i < d.length; i++) {
            if (d[i] == num) {
                return true;
            }
        }
        return false;
    }
0 голосов
/ 10 сентября 2011

Добавьте все входные данные в Set, а затем переберите элементы Set для получения суммы.

...