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 が得られることです。2 つの値を入力すると、最初に 1 を入力してから 4 を入力すると、1 + 2 + 3 + 4 が加算され、最初の入力が 4 のように 2 番目の入力よりも大きい場合は 4 + 3 + になります。 2 + 1.なぜこれをしていないのかわかりません。

4

3 に答える 3

0

と を切り替える必要がa--ありa++ます。ケースを交換するだけです。

現在の方法では、aが 1 でb4 の場合、最初の if/while セットに入り、最初のaをに追加しsumますが、次に を減少さ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 に答える