我该如何制作一个程序来检查是否键入文本或数字。如果键入 给程序输入文本,直到您键入数字为止。有什么想法吗? 谢谢你。
答案 0 :(得分:0)
有一个主要功能可解决您的问题
static void Main(string[] args)
{
while (!Char.IsDigit(Console.ReadKey(true).KeyChar))
{
Console.WriteLine("enter number please!");
}
}
您只需检查输入是否不是数字。我还为ReadKey()添加了真值,因此您的输入将不会显示在控制台上 编辑: 如果您需要一个数字而不是一个数字,则可以尝试
static void Main(string[] args)
{
while (Console.ReadLine().ToCharArray().Any(x => Char.IsLetter(x)))
{
Console.WriteLine("enter number please!");
}
}
答案 1 :(得分:0)
我将按以下方式使用int.TryParse(或double.TryParse-任意值):
static void Main(string[] args)
{
var gotNumber = false;
var parsedNumber = 0;
while (!gotNumber)
{
Console.WriteLine("Please enter a number: ");
var input = Console.ReadLine();
if (int.TryParse(input, out parsedNumber)) // Or double.TryParse for a double - etc.
{
gotNumber = true;
}
else
{
Console.WriteLine("You entered an invalid number - please try again");
}
}
Console.WriteLine($"You entered {parsedNumber}");
Console.ReadLine();
}
答案 2 :(得分:0)
我看到了您的标记控制台,但是如果您这样做是为了防止GUI中出现某人,那么您的方法可能是错误的。我认为,最好防止用户首先写非数字字符。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// Number only + allow to press enter, backspace and other needed keys.
// This does not allow letters or signs
bool isKey = char.IsDigit(e.KeyChar);
bool isControl = char.IsControl(e.KeyChar);
if (!isKey & !isControl)
e.Handled = true;
}
在Designer.cs initializeComponent()表单上,您将需要以下内容:
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox1_KeyPress);
您可以创建一个函数并在任何文本框中使用它。
但是,如果控制台程序需要此,则:
Console.WriteLine("Enter a number.");
ConsoleKeyInfo myChar;
if (!Char.IsNumber(myChar.KeyChar))
{
Console.WriteLine("Non-numeric input"); // Optional
}
答案 3 :(得分:0)
如果您定义了期望“看到”的内容,将会很有帮助。
无论哪种方式,我都会在用户输入整个输入之后检查字符串。我将使用正则表达式(Regex)进行检查。一旦您“掌握了窍门”,它们就非常简单,这里的人们可以帮助您编写正则表达式
答案 4 :(得分:0)
我会在While循环中使用TryParse函数。
如果字符串为Parseble,TryParse函数将返回“ true”,因此对您来说,保持循环继续进行也是必须的,以使布尔值取反。
static void Main(string[] args)
{
bool isNumber;
int number;
Console.Write("Write a number:");
while (!(isNumber = int.TryParse((Console.ReadLine().Trim()),out number)))
{
Console.Write("That's not a number, try again: ");
}
Console.WriteLine($"It's the number {number}");
}