首页 > 解决方案 > 使用循环和控制结构显示所有奇数和偶数的总和

问题描述

我需要创建一个接受 10 个整数的 java 程序,如果输入的数字是奇数,则将其提高到 ^ 1 次方,如果用户输入另一个奇数,则再次将其提高到下一个 ^ 2 次方,与偶数相同,但是功率从 10 开始,每个输入的偶数都会减少。之后,我必须显示所有偶数和奇数的总和。

困难的是不允许使用数组和 java.util.Math。

例如:

程序要求用户输入 10 个整数:

用户输入(整数 1-10):

1 ^ 1 = 1(奇数)

2 ^ 10 = 1024(偶数)

3 ^ 2 = 9(奇数)

4 ^ 9 = 262 114(偶数)

5 ^ 3 = 125(奇数)

6 ^ 8 = 1 679 616(偶数)

7 ^ 4 = 2 401(奇数)

8 ^ 7 = 2 097 152(偶数)

9 ^ 5 = 59 049(奇数)

10 ^ 6 = 1 000 000(偶数)

输出:Even Powered 的总和

奇次幂的总和

谢谢德文,我试图运行该程序,但我有逻辑错误。

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;
}

}

程序输出:

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

标签: javaalgorithmloopsformulacontrol-structure

解决方案


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; 
    }

}

然后主要是:

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

您可以通过简单的条件检查输入是否有效,以查看输入是否为整数或分配要求检查的任何其他规定。如果该条件为真,则只需让 Run() 再次调用自身并重置计数变量。


推荐阅读