【问题标题】:Struggling with understanding FOR and WHILE loops努力理解 FOR 和 WHILE 循环
【发布时间】:2014-12-01 02:34:50
【问题描述】:

描述:编写一个程序,询问用户一个起始值和一个结束值。然后程序应该打印这些值之间的所有值。此外,打印出这两个值之间的数字的总和和平均值。

我需要帮助来尝试布局程序并使其正确运行。程序运行,想要的结果就是不一样。有人可以帮助我了解我应该怎么做才能使其正常工作。谢谢。

但是,这是我的代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Prog152d
{ 
    public static void main(String[] args) throws IOException
    {
        BufferedReader userin = new BufferedReader(new InputStreamReader(System.in));
        String inputData;
        int starting, ending, sum;
        double avg;
        sum = 0;
        System.out.print("Enter Starting Value: ");
        inputData = userin.readLine();
        starting = Integer.parseInt( inputData );
        System.out.print("Enter Ending Value: ");
        inputData = userin.readLine();
        ending = Integer.parseInt( inputData );
        while ( starting <= ending)
        {

            System.out.println(starting);
            sum = sum + starting;
            avg = sum / 4;


           System.out.println("Sum of the numbers " + starting + " and " + ending + " is " + sum);
            System.out.println("The average of the numbers " + starting + " and " + ending     + " is " + avg);
        starting++;
        }
    }
}

样本输出:

Enter Starting Value:  5

Enter Ending Value :  8

5 

6 

7

8 

Sum of the numbers 5..8 is 26 

The average of the numbers 5..8 is 6.5

【问题讨论】:

  • 如果你指定你得到什么会有所帮助。为什么要在 while 循环中打印总和?只需添加到循环内的总和并在其下方打印结果。与平均值相同。另外,你为什么要假设你平均得到 4 个值?
  • @HunterLanders 如果我的回答有助于回答您的问题,您介意将我的回答标记为正确吗?

标签: java loops for-loop while-loop computer-science


【解决方案1】:

我看到的第一个问题是以下行:

avg = sum / 4;

除非是唯一的可能性,否则不要使用常量值(在本例中为 4)。而是使用一个变量并将其值设置为您的起始值和结束值之间的差值:

int dif = ending - starting + 1; // add one because we want to include end ending value
avg = sum / dif;

此外,平均值只需要在最后计算一次,因此不属于您的循环。进行这些调整后,您最终会得到这样的结果...

int start = starting; // we don't want to alter the value of 'starting' in our loop
while ( start <= ending)
{
    System.out.println(start);
    sum = sum + start;
    start++;
}

int dif = ending - starting + 1;
avg = (double)sum / dif;
System.out.println("Sum of the numbers between " + starting + " and " + ending + " is " + sum);
System.out.println("The average of the numbers between " + starting + " and " + ending + " is " + avg);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2021-12-30
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多