Dut*_*ner 6 c# console for-loop
我仍然是高级编程语言编程的初学者,所以我不知道这是否是一个简单的解决方案,但无论如何我很乐意学习.我在C#中编写了一个小程序报警程序,让用户输入报警需要关闭的秒数.它工作得很好,但用户需要提供的输入必须是一个数字.当用户输入任何形式的文本时,程序崩溃.现在,如何阻止用户输入文本,调用函数或在用户执行其他操作时,而不是刚刚崩溃的程序?
这是我现在的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test
{
class Alarm
{
public static void play()
{
int sec;
sec = Convert.ToInt16(Console.ReadLine());
for (int i = 0; i < seconds; ++i)
{
System.Threading.Thread.Sleep(1000);
}
for (int i = 0; i < 10; i++)
{
Console.Beep();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Llo*_*ell 11
您应该在转换前完成检查:
int sec;
if (int.TryParse(Console.ReadLine(), out sec)
{
// this is valid continue
}
else
{
// show error highlighting that entry must be a number
}
Run Code Online (Sandbox Code Playgroud)
int.TryParse将返回一个布尔突出显示输入是否可解析为int.sec如果成功,它还会将变量设置为值.
您可以无限循环直到用户输入一个数字:
int number = 0;
while(!Int32.TryParse(Console.ReadLine(), out number))
{
Console.WriteLine("Please input a number.");
}
Run Code Online (Sandbox Code Playgroud)
Int32.TryParsefalse如果转换失败则返回,而不是抛出异常,如果成功则返回第二个out参数中的结果.
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |