user7811052
user7811052

Reputation:

Finding unique numbers

I am trying to use a set to find the unique numbers and get the sum from user entered numbers. I heard that arrays are easier but a set might just do for me. I don't know much about sets or what they do so any input would be fantastic. Much appreciated everybody!

import java.util.Scanner;

public class getdistinct 
{ 
   int dialr;
   Scanner scan = new Scanner(System.in);

   public double go()
   {
      double a = 0
      counter = 10;

      int total = 0;

      for (counter != 0)
      {
         int thisisnewnumber = scan.nextInt();
         System.out.println("Enter number that you want to add: ");
             if(newInteger < 0) 
             {
                 n = n + 1
                 dial = dial - 1;
             }
             else 
             {
                 System.out.println("wrong");
             }
      } 

      System.out.println("the total is ";
      return a;
   }
}

Upvotes: 1

Views: 110

Answers (3)

Ganesh S
Ganesh S

Reputation: 520

java.util.HashSet stores unique values. Made minor changes to your program to use Set to store unique values and calculate sum of unique values using for loop

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class quiz_assignment {
int counter;
Scanner scan = new Scanner(System.in);

public int go() {
    int a = 0;
    int n = 0;
    counter = 10;

    Set<Integer> unValues = new HashSet<Integer>();

    while (counter != 0) {
        System.out.println("Enter Integer: ");
        int newInteger = scan.nextInt();
        if (newInteger < 0) {
            unValues.add(new Integer(newInteger));
            n += newInteger;
            counter = counter - 1;
            a = a + newInteger;
        } else {
            System.out
                    .println("Must be negative integer, please try again");
        }
    }

    int unSum = 0;
    for (Integer value : unValues) {
        unSum += value;
    }

  System.out.println("The sum of all ten integers is: " + a);
    System.out.println("The sum of unique integers is: " + unSum);
    return n;
}

public static void main(String[] args) {
    quiz_assignment o = new quiz_assignment();
    o.go();
}
}

Upvotes: 2

Rahul Chowdhury
Rahul Chowdhury

Reputation: 681

Hashsets are useful because they don't store duplicate entries. You can use them to store your set of unique numbers that the user inputs. I also removed the variable "a" from your code because its purpose seemed identical to variable n's.

import java.util.Scanner;

public class quiz_assignment{ 
int counter;
Scanner scan = new Scanner(System.in);

public int go()
{
  HashSet<Integer> distinctNumbers = new HashSet<>();
  int n=0;
  counter = 10;

  int total = 0;

  while (counter != 0)
  {
     System.out.println("Enter Integer: ");
     int newInteger = scan.nextInt();
         if(newInteger < 0) 
         {
             n+=newInteger;
             counter = counter - 1;
             distinctNumbers.add(newInteger);
         }
         else 
         {
             System.out.println("Must be negative integer, please try again");
         }
  } 
  int size = distinctNumbers.size();

  System.out.println("The sum of all ten integers is: " + n);

  System.out.println("You inputed " + size + " numbers.");

  System.out.println("Your numbers are:");

  for(Integer i: distinctNumbers){
       System.out.println(i);
  }



  return n;
 }
}

Upvotes: 0

Fady Saad
Fady Saad

Reputation: 1189

Set has its implementation in various classes like HashSet, TreeSet, LinkedHashSet. Following is an example to explain Set functionality I used here (HashSet).

import java.util.Scanner;

public class quiz_assignment 
{ 
   int counter;
   Scanner scan = new Scanner(System.in);
   Set<Integer> ditinctSet = new HashSet<Integer>();

   public int go()
   {
      int a=0;
      int n=0;
      counter = 10;

      int total = 0;

      while (counter != 0)
      {
         System.out.println("Enter Integer: ");
         int newInteger = scan.nextInt();

         if(!ditinctSet.contains(newInteger)){
              ditinctSet.add(newInteger);
         }

             if(newInteger < 0) 
             {
                 n+=newInteger;
                 counter = counter - 1;
                 a=a+newInteger;
             }
             else 
             {
                 System.out.println("Must be negative integer, please try again");
             }
      } 

      System.out.println("The sum of all ten integers is: " + a);
      System.out.println("Distinct numbers are: ");
      System.out.println(ditinctSet);
      return n;
   }
}

And here a link to start knoing more about sets.

Upvotes: 0

Related Questions