如何解决我正在尝试制作一个程序,该程序不断向用户询问一个数字,直到他们输入 -1,然后计算平均值
我的代码的问题是将用户输入的 -1 添加到总和中。我想我错过了一些非常简单的东西。 这是我的代码:
double sum =0 ;
double average=0 ;
double total=0 ;
double input;
Console.WriteLine("What is your next number? (Type -1 to exit) ");
Double.TryParse(Console.ReadLine(),out input);
totaL++;
sum += input;
while (input != -1)
{
Console.WriteLine("What is your next number? (Type -1 to exit) ");
Double.TryParse(Console.ReadLine(),out input);
totaL++;
sum += input;
}
if(input == -1)
{
average = (double)sum / total;
Console.WriteLine("The average of your numbers is: {0}",average);
}
解决方法
实际问题是您在平均值中包含了 -1
,您可以通过在进行任何数据操作之前检查 -1
来解决此问题
示例
if (input == -1)
break;
total++;
sum += input;
List<T>
可能是这里最合适的数据结构。您还可以访问 Average
并根据需要对输入进行进一步分析。
计算一系列数值的平均值。
示例
var list = new List<double>();
while (true)
{
Console.Write("What is your next number? (Type -1 to exit) : ");
double input = 0;
while (!double.TryParse(Console.ReadLine(),out input))
Console.WriteLine("You had one job. What is your next number? (Type -1 to exit) ");
if (input == -1)
break;
list.Add(input);
}
Console.WriteLine("The average of your numbers is: {0}",list.Average());
Console.WriteLine("Max: {0}",list.Max());
Console.WriteLine("Min: {0}",list.Min());
Console.WriteLine("Total: {0}",list.Sum());
Console.WriteLine("Count: {0}",list.Count());
输出
What is your next number? (Type -1 to exit) : 1
What is your next number? (Type -1 to exit) : 2
What is your next number? (Type -1 to exit) : 3
What is your next number? (Type -1 to exit) : 4
What is your next number? (Type -1 to exit) : -1
The average of your numbers is: 2.5
Max: 4
Min: 1
Total: 10
Count: 4
,
这里的问题 - 已经被指出 - 是在 while-loop
之前和之内没有检查用户是否确实输入了 -1。
因此,当程序启动时 - 如果用户输入 -1,程序实际上会将 -1 添加到您的逻辑中,跳过循环,提示然后退出。
在您的循环中 - 如果用户输入 -1,程序会将 -1 添加到您的逻辑中,然后退出循环,提示然后退出。
在这两种情况下 -1 都将被计算在内。
在不偏离您的实施的情况下,我们可以执行以下操作:
double sum = 0;
double average = 0;
double total = 0;
double input;
Console.WriteLine("What is your next number? (Type -1 to exit) ");
Double.TryParse(Console.ReadLine(),out input);
// first check before entering the loop
if (input != -1)
{
total++;
sum += input;
}
while (input != -1)
{
Console.WriteLine("What is your next number? (Type -1 to exit) ");
Double.TryParse(Console.ReadLine(),out input);
// second check exit early
if (input == -1)
{
break;
}
total++;
sum += input;
}
if (input == -1)
{
average = (double)sum / total;
Console.WriteLine("The average of your numbers is: {0}",average);
}
话虽如此 - 我建议您将 @00110001 解决方案视为一种潜在的实现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。