我正在编写一个简单的程序来查找两个输入数字之间的奇数之和,我将不胜感激。我已经在这个问题上工作了很长时间,我可以使用一些专业知识。
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();
}
}
答案 0 :(得分:1)
我会首先测试num1
是否甚至,如果添加一个使其奇数(否则,它已经是奇数) 。然后按2
递增,因此您知道每个i
都是奇数。接下来,您的循环测试应为<= num2
(而不是< num2 - num1
),因为您希望范围从num1
到num2
。最后,不要忘记实际打印结果。像,
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);
}
}