Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.util.Vector;
- class HappyNumber
- {
- static int squareSum(int n)
- {
- if (n == 0)
- {
- return 0;
- }
- else
- {
- int digit = n % 10;
- return (digit * digit + squareSum(n / 10));
- }
- }
- public static void main (String[] args)
- {
- Vector<Integer> v = new Vector<>(1);
- Scanner ui = new Scanner(System.in);
- int userNumber = 0;
- int firstNumber = 0; // so program correctly prints correct first given number
- do // only allows positive int as an input
- {
- System.out.println("Please enter a positive integer.");
- while (!ui.hasNextInt())
- {
- System.out.println("Invalid input. Please enter a positive integer.");
- ui.next();
- }
- userNumber = ui.nextInt();
- firstNumber = userNumber;
- }
- while (userNumber <= 0);
- int a = 0; // initializing loop values
- int b = 0;
- boolean dupe = false;
- do
- {
- a = userNumber;
- b = squareSum(a);
- v.add(a); // adding the value to the vector to print each intermediate number
- userNumber = b;
- // loop for checking duplicates
- for (int j = 0; j < v.size(); j++)
- {
- for (int k = j + 1; k < v.size(); k++)
- {
- if (k !=j && v.get(k) == v.get(j))
- {
- dupe = true;
- }
- }
- }
- if (b == a)
- {
- break;
- }
- }
- while(dupe == false);
- System.out.println(v);
- if (dupe == true)
- {
- System.out.println(firstNumber + " is unhappy.");
- }
- else
- {
- System.out.println(firstNumber + " is happy.");
- }
- ui.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement