0
import java.util.Scanner;
public class Q6 {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Please type two numbers ");
        int a = keyboard.nextInt();
        int b = keyboard.nextInt();
        int sum = 0; 
        if (a <= b) {
            while (a <= b) {
                sum += a;
                a--;
            }
        }
        else if (b <= a) {
            while (b <= a) {
                sum += a;
                a++;
            }
        }
        System.out.print("The sum of the numbers between " + a + " and " + b + " is " + sum);
    }
}   

我遇到的主要问题是它给了我每个输入的总和 -1073741823。应该发生的是,当我输入两个值时,首先输入 1 然后 4 它应该将 1 + 2 + 3 + 4 加在一起,如果第一个输入大于第二个输入,例如 4 首先然后 1 它将变为 4 + 3 + 2 + 1。我不明白为什么它不这样做。

4

3 回答 3

0

你需要切换a--a++。您只需切换案例即可。

你现在拥有它的方式,如果a是 1 和b4,它将进入第一个 if/while 设置,它将第一个添加asum,然后递减a,将其移离 更远b,而不是更近。因此,您的循环将继续直到a溢出。可能不是你想要的。

b如果小于一a开始就会发生类似的事情。

此外,正如@rafael-rendon-pablo 的示例所示,还有很多其他方法可以重写代码。

于 2012-12-03T05:18:09.670 回答
0

您想对 [a,b] 范围内的数字求和,包括在内,请尝试以下操作。

import java.util.Scanner;
public class Q6 {
  public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Please type two numbers ");
    int a = keyboard.nextInt();
    int b = keyboard.nextInt();
    int sum = 0; 

    int s = Math.min(a, b);
    int e = Math.max(a, b);

    while (s <= e) {
      sum += s;
      s++;
    }

    System.out.print("The sum of the numbers between " + a + " and " + b + " is " + sum);
  }
}   
于 2012-12-03T05:11:27.873 回答
0

你不应该首先减少while loop你应该增加

而不是a--;a++;

而不是while (b <= a) {while (b >= a) {

全部一起

import java.util.Scanner;
public class Q6 {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Please type two numbers ");
        int a = keyboard.nextInt();
        int b = keyboard.nextInt();
        int sum = 0; 
        if (a <= b) {
            while (a <= b) {
                sum += a;
                a++;
            }
        }
        else if (b <= a) {
            while (b >= a) {
                sum += b;
                b--;
            }
        }
        System.out.print("The sum of the numbers between " + a + " and " + b + " is " + sum);
    }
}   
于 2012-12-03T05:14:21.837 回答