-3

2 つの境界間の合計を (増分を使用して) 計算していますが、適切な出力が得られません。

例 1:

First: 3
Last: 5
Sum is: 12

例 2:

First: 2
Last: 8
Sum is: 35

私が使用しているコードは次のとおりです。

public static void main(String[] args) {
    // TODO code application logic here
    Scanner reader = new Scanner(System.in);
    System.out.print("First: ");
    int x = Integer.parseInt(reader.nextLine());
    System.out.print("Second: ");
    int y = Integer.parseInt(reader.nextLine());
    int i = x;
    int result = 0;

    while (i < y){
        result += i + 1;
        i++;

        System.out.println("Sum is " + result);

間違った出力:

First: 3
Second: 5
Sum is: 9
4

1 に答える 1

1

を追加する最初の反復を効果的にスキップしています3

result += i + 1;
i++;

あなたの3、5の例では としてi始まり3、最初の反復がi+1あなたresultに追加されるので、追加しています4

最後の反復でiは 4 になり、 に追加4+1されます。resultこれが、実際の結果が3期待される結果よりも小さい理由です。

私があなただったら、このように結果を作成します

for(int i = x; i<= y; i++)
{
    result += i;
}

*whileループは反復ごとに増分合計を出力するため、この動作が見られるはずです。

于 2013-11-13T18:37:57.490 に答える