Display the sum of all raised odd and even number using loop and control structures

1.5k Views Asked by At

I need to create a java program that will accepts 10 integers and if the entered number is odd raise it to ^ 1 power and if the user input another odd number raised it again to the next power ^ 2, same with Even numbers however the power starts at 10 and will decrease in each even numbers inputed. After that, I have to display the sum of all Even and Odd numbers that was raised.

The hard thing is were not allowed to use arrays, and java.util.Math.

For example:

The program ask the user to input 10 integers:

User inputted ( integers 1-10 ):

1 ^ 1 = 1 (odd)

2 ^ 10 = 1024 (even)

3 ^ 2 = 9 (odd)

4 ^ 9 = 262 114 (even)

5 ^ 3 = 125 (odd)

6 ^ 8 = 1 679 616 (even)

7 ^ 4 = 2 401 (odd)

8 ^ 7 = 2 097 152 (even)

9 ^ 5 = 59 049 (odd)

10 ^ 6 = 1 000 000 (even)

Output: The sum of Even Powered

The sum of Odd Powered

Thanks Devon, I tried to run the program but i have logical error.

public class SumOfOddEvenMain {

public static void main(String[] args) {
    SumOfOddEven temp = new SumOfOddEven();
    System.out.println(temp.Run());
}

}

import java.util.Scanner;

public class SumOfOddEven {
private long sumOfOdds;
private long sumOfEvens;
private int countOfOdds;
private int countOfEvens;

public SumOfOddEven() {
    countOfOdds = 1;
    countOfEvens = 10;
    sumOfOdds = 0;
    sumOfEvens = 0;
}
public String Run() {
    Scanner in = new Scanner(System.in);

    for(int i = 0; i < 10; i++){
        System.out.println("Enter integer number " + i);
        int number = in.nextInt();

        if(number % 2 == 0) {
            for(int j = countOfEvens; j > 1; j--) {
                number *= number;
            }

            sumOfEvens += number;
            countOfEvens--;
        }
        else {
            for(int k = countOfOdds; k > 1; k--) {
                number *= number;
            }

            sumOfOdds += number;
            countOfOdds++;
        }
    }

    in.close();
    return "Sum of odds: " + sumOfOdds + "\nSum of evens: " + sumOfEvens;
}

}

Program Output:

Enter integer number 0
1
Enter integer number 1
2
Enter integer number 2
3
Enter integer number 3
4
Enter integer number 4
5
Enter integer number 5
6
Enter integer number 6
7
Enter integer number 7
8
Enter integer number 8
9
Enter integer number 9
10
Sum of odds: -495568963
Sum of evens: 0
2

There are 2 best solutions below

0
Arvind Kumar Avinash On BEST ANSWER

You can do it as follows:

import java.util.Scanner;

public class SumOfOddEven {    
    public static void main(String[] args) {
        int sumOddInts = 0, sumEvenInts = 0, countOddInts = 1, countEvenInts = 10;
        Scanner in = new Scanner(System.in);
        for (int i = 1; i <= 10; i++) {
            System.out.println("Count: " + i + ", enter an integer (from 1 to 10): ");
            int number;
            do {
                number = in.nextInt();
                if (!(number >= 0 && number <= 10)) {
                    System.out.println("Try again, enter an integer (from 1 to 10): ");
                } else {
                    if (number % 2 == 0) {
                        sumEvenInts += power(number, countEvenInts--);
                    } else {
                        sumOddInts += power(number, countOddInts++);
                    }
                }
            } while (!(number >= 0 && number <= 10));
        }
        in.close();
        System.out.println("The sum of even powered: " + sumEvenInts);
        System.out.println("The sum of odd powered: " + sumOddInts);
    }

    static int power(int n, int power) {
        int num = 1;
        for (int i = 1; i <= power; i++) {
            num *= n;
        }
        return num;
    }
}

Note: The program given above restricts the numbers, being raised to the power as per the requirement, to 1 to 10 to avoid integer overflow

A sample run:

Count: 1, enter an integer (from 1 to 10): 
12
Try again, enter an integer (from 1 to 10): 
3
Count: 2, enter an integer (from 1 to 10): 
5
Count: 3, enter an integer (from 1 to 10): 
6
Count: 4, enter an integer (from 1 to 10): 
7
Count: 5, enter an integer (from 1 to 10): 
8
Count: 6, enter an integer (from 1 to 10): 
2
Count: 7, enter an integer (from 1 to 10): 
1
Count: 8, enter an integer (from 1 to 10): 
9
Count: 9, enter an integer (from 1 to 10): 
10
Count: 10, enter an integer (from 1 to 10): 
4
The sum of even powered: 204688256
The sum of odd powered: 59421
19
Devon On
public class SumOfOddEven {
    private long sumOfOdds;
    private long sumOfEvens;
    private int countOfOdds;
    private int countOfEvens;

    public SumOfOddEven() {
        countOfOdds = 1;
        countOfEvens = 10;
        sumOfOdds = 0;
        sumOfEvens = 0;
    }
    public String Run() {
        Scanner in = new Scanner(System.in);

        for(int i = 0; i < 10; i++){
            System.out.println("Enter integer number " + i);
            long number = in.nextLong();

            if(number % 2 == 0) {
                for(int j = countOfEvens; j >= 1; j--) {
                    number *= number;
                }

                sumOfEvens += number; 
                countOfEvens--;
            }
            else {
                for(int k = countOfOdds; k >= 1; k--) {
                    number *= number;
                }

                sumOfOdds += number;
                countOfOdds++;
            }
        }

        in.close();
        return "Sum of odds: " + sumOfOdds + "\nSum of evens: " + sumOfEvens; 
    }

}

And then in the main:

public static void main(String[] args) {
    SumOfOddEven temp = new SumOfOddEven();
    System.out.println(temp.Run());
}

You can do checking to make sure the input is valid as well with a simple condition to see if the input is an integer or any other stipulation that the assignment says to check for. If that condition is true, then simply have Run() call itself again and reset the count variables.