我的程序允许用户输入20个价格并显示这些值的平均值。输入上一次输入后,为什么控制台关闭?下面是我正在运行的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace machineproblem4
{
class Program
{
static void Main(string[] args)
{
int sum = 0;
double average = 0;
Console.WriteLine("\t\t\t INPUT PRICES \n");
int[] price = new int[20];
Console.WriteLine("\t\t\t Please enter 20 prices \n");
for (int ctr = 0; ctr < 20; ctr++)
{
Console.Write("Enter price {0} : ", ctr + 1);
price[ctr] = Convert.ToInt32(Console.ReadLine());
}
// [...calculate sum...]
//average
Console.WriteLine("\n----------------------------");
Console.WriteLine("||average of the prices||");
average = sum / 20;
Console.WriteLine("average of the prices: {0}", average);
//more code that outputs statistics about the inputs
//exit
//Edit: This is what fixed my problem
Console.WriteLine("press any key to exit ..");
Console.ReadKey();
}
}
}
答案 0 :(得分:2)
使用Console.Readline();
Read(),ReadLine()和ReadKey()基本上都是静态方法,它们属于Console类。这就是我们使用这些方法的原因:
Console.Read():
- 方法接受String并返回整数。
Console.ReadLine()
: - 方法接受String并返回字符串。
Console.ReadKey()
: - 方法接受角色并返回角色。
这就是我们大多使用Console.ReadKey()方法从输出窗口返回源代码的原因。
因为当我们只按下角色时我们直接来源代码。如果您将使用Console.Read()和Console.ReadLine方法 你需要按回车键,回到源代码而不是任何角色。
答案 1 :(得分:0)
您可以在最后一个语句中放置Console.Read()。您还可以在最后一个语句中放置断点
答案 2 :(得分:0)
把:
Console.Readline();
在主函数的末尾,所以等到你在关闭之前按Enter键。
答案 3 :(得分:0)
通常,等待来自控制台应用程序的用户输入不是一个好主意。这对于调试是可以的,但不一定是发布。 因此,首先要确定您的应用程序是使用
进行调试还是发布配置private static bool IsDebug()
{
object[] customAttributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(DebuggableAttribute), false);
if ((customAttributes != null) && (customAttributes.Length == 1))
{
DebuggableAttribute attribute = customAttributes[0] as DebuggableAttribute;
return (attribute.IsJITOptimizerDisabled && attribute.IsJITTrackingEnabled);
}
return false;
}
然后使用,
if (IsDebug())
Console.Readline();
这消除了编辑不同构建配置的代码的需要。另一种方法是根据@Erwin
的建议设置断点并调试控制台应用程序答案 4 :(得分:0)
以前的答案实际上都没有直接回答为什么会发生这种情况的问题。在最后一次输入后控制台关闭的原因是其余代码运行得非常快,当它到达程序结束时,控制台将关闭。这是正确的行为,在运行控制台应用程序时应该是预期的。正如其他答案所述,您可以通过在关闭控制台之前要求最终输入来解决这个问题,但就是这样,一个解决方法。
如果您要输出到文本文件而不仅仅是控制台,您会看到所有输出都是按照您的预期生成的。控制台输出和关闭速度太快,您无法在代码中暂停一下。
此外,尚未提及的解决方案是从Visual Studio运行项目而不进行调试,当它在关闭控制台之前完成处理时将自动输出“按任意键继续...”。通过这种方式,您可以在没有生产代码中不需要的无关代码的情况下查看输出内容。