查找两个数字之间的赔率总和

时间:2017-04-18 02:27:27

标签: java

我正在编写一个简单的程序来查找两个输入数字之间的奇数之和,我将不胜感激。我已经在这个问题上工作了很长时间,我可以使用一些专业知识。

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.print("#1: ");
        int num1 = s.nextInt();
        System.out.print("#2: ");
        int num2 = s.nextInt();
        int sum = 0;
        for(int i= num1; i<(num2-num1); i++){
            if (i%2 != 0){
                sum+=i;
            }
        }
        System.out.print();
    }
}

4 个答案:

答案 0 :(得分:1)

我会首先测试num1是否甚至,如果添加一个使其奇数(否则,它已经是奇数) 。然后按2递增,因此您知道每个i都是奇数。接下来,您的循环测试应为<= num2(而不是< num2 - num1),因为您希望范围从num1num2。最后,不要忘记实际打印结果。像,

if (num1 % 2 == 0) {
    num1++;
}
int sum = 0;
for (int i = num1; i <= num2; i+=2) {
    sum += i;
}
System.out.println(sum);

或者,在Java 8+中,您可以使用IntStream之类的

进行此操作
System.out.println(IntStream.rangeClosed(num1, num2).filter(x -> x % 2 != 0).sum());

答案 1 :(得分:1)

您可以在此处修复一些简单错误。首先,它不应该是(num2-num1),而是num1。另外,请确保在最后一个语句中打印结果。相比之下,还有很多其他方法可以解决这个问题,但是如果你解决了这几个问题,你的简单方法就可以了。

答案 2 :(得分:0)

您也可以应用一些数学而不是循环遍历所有数字,这样更有效并且变成恒定时间算法而不是线性时间。

要获得数字的总和,您可以将两个数字之间的平均值乘以范围内的元素数。

如果两个数字中的任何一个都是奇数,您可以添加一个或减去一个来到达范围中的第一个偶数,因此您可以从偶数计算到偶数。

示例:从3到12,您将使用4和12.平均值为8.并且您在该范围内有(12-4)/ 2 + 1 = 5个偶数(+1是因为它是包含范围) 。总和将是8 * 5 = 40。

这是真的:4 + 6 + 8 + 10 + 12 = 40

答案 3 :(得分:0)

  import java.util.Scanner;
class SumOfOdds
{
        public static void main(String[] args) 
        {
            Scanner s = new Scanner(System.in);
            System.out.print("#1: ");
            int num1 = s.nextInt();
            System.out.print("#2: ");
            int num2 = s.nextInt();
            if (num1 % 2 == 0)
            {
                num1++;
            }
            int sum = 0;
            for (int i = num1; i <= num2; i+=2)
            {
                sum += i;
            }
            System.out.println(sum);
        }
}