1

我正在写一个成绩计算器,最后,我问用户是否还有其他成绩要计算。

 Console.Write("Do you have another grade to calculate? ");
        moreGradesToCalculate = Console.ReadLine();
        moreGradesToCalculate = moreGradesToCalculate.ToUpper();

我想显示一个带有“是”或“否”选项的对话框。

如果 DialogResult 为 Yes,我希望能够再次运行该程序,如果结果为 No,则执行其他操作。

4

4 回答 4

1

您应该使用do...while(...)循环。

于 2012-08-12T16:29:34.120 回答
0

你可以使用do/while类似的构造

do {
     Console.Write("Do you have another grade to calculate Y/N? "); 
     var moreGradesToCalculate = Console.ReadLine().ToUpper();
     if(moreGradesToCalculate == "Y")
        //do something  
     else if(moreGradesToCalculate == "N")
         break;

}while(true);
于 2012-08-12T16:32:35.473 回答
0

我认为再次运行整个程序不是一个好主意,只需重新开始获取用于计算成绩的数字(将代码包装在一个循环中)。

对于 DialogBox,只需导入System.Window.Forms程序集并使用它:

DialogResult result = MessageBox.Show("Do you want to start over?", "Question", MessageBoxButtons.YesNo);

if (result == DialogResult.No) {
    // TODO: Exit the program
}
于 2012-08-12T16:32:52.160 回答
0

如果您想要一个对话框,则必须在文件顶部添加对同一名称空间的引用System.Windows.Forms并添加语句。using然后,您只需检查在Do-While 循环结束时Show对对象调用方法的结果。MessageBox例如:

do
{
    // Grading calculation work...

}
while (MessageBox.Show("Do you have another grade to calculate?",
    "Continue Grading?", MessageBoxButtons.YesNo) == DialogResult.Yes);

这将一直循环,直到用户单击否。

如果您不想继续使用鼠标,请在命令行上执行所有操作:

ConsoleKeyInfo key = new ConsoleKeyInfo();
do
{
    // Grading work...

    Console.WriteLine("\nDo you want to input more grades? (Y/N)");
    do
    {
        key = Console.ReadKey();
    }
    while (key.Key != ConsoleKey.Y && key.Key != ConsoleKey.N);
}
while (key.Key == ConsoleKey.Y);

这是 Microsoft 提供的关于循环或“迭代语句”的参考材料的链接。这Do-While是您刚开始时应该尝试背诵的少数几个之一:

http://msdn.microsoft.com/en-us/library/32dbftby.aspx

于 2012-08-12T17:02:14.973 回答