簡體   English   中英

如何限制控制台輸入C#

[英]How to limit console input c#

我試圖限制控制台的輸入,以便在無效輸入上添加錯誤消息。 輸入必須為9個數字(編輯:范圍為100000000-999999999),該輸入才有效。 我遇到的問題是使錯誤正確顯示以及使程序繼續運行。 該程序設置為使用sin作為整數。

int sin;
Console.Write("Please enter sin number: ");
sin = int.Parse(Console.ReadLine());

我嘗試在下面使用它,但收到無盡的錯誤消息以及所有輸入上的輸入無效

var digits = Console.ReadLine();
while (digits.Length > 9 || digits.Length < 9)
{
    Console.WriteLine("Error invalid entry");
}

如何獲取程序以檢查數字的長度以及以sin作為int值繼續執行程序,以便程序的其余部分可以正常工作?

您需要重新閱讀。 您只是在打印一個錯誤,但是沒有提示輸入帶有新sin = int.Parse(Console.ReadLine());的新輸入sin = int.Parse(Console.ReadLine());

以下應該工作(編輯,加油)

int sin;
Console.Write("Please enter sin number: ");
string input = Console.ReadLine();
bool parse_ok=  int.TryParse(input,out sin);

while (!parse_ok || digits.Length != 9 || sin < 100000000 )
{
    Console.WriteLine("Error invalid entry");
    Console.Write("Please enter sin number: ");
    input = Console.ReadLine();  
    parse_ok=  int.TryParse(input,out sin);
}   ;

您的Console.ReadLine()不在循環中,因此一旦出現錯誤消息,用戶將無法輸入新值。 錯誤消息只會無限循環顯示。 嘗試以下方法-一旦由於良好的輸入而安全地退出循環, sin變量將具有SIN的整數值:

int sin = 0;
while (true) {
    String digits = Console.ReadLine();
    if (digits.Length == 9 && Int32.TryParse(digits, out sin)) {
        if (sin >= 100000000) {
            break;
        }
    }
    Console.WriteLine("Error invalid entry");
}

您只需要一系列的三項檢查:

  1. 輸入的長度為9
  2. 輸入可以成功解析為整數int.TryParse(string, out int)
  3. 解析的整數在100000000-999999999的范圍內

這樣,您可以嘗試以下操作:

更新以包含錯誤消息

using System;

public class Program
{
    public static void Main()
    {
        int sin = 0;

        Console.Write("Please enter sin number: ");
        string input = Console.ReadLine();
        while(input.Length != 9 ||
              !int.TryParse(input, out sin) || 
              sin < 100000000)
        {
            Console.WriteLine("Error invalid entry!");
            Console.WriteLine("");

            Console.Write("Please enter sin number: ");
            input = Console.ReadLine();
        }

        Console.WriteLine("Entered number: {0}", sin);
    }
}

結果:

Please enter sin number: 012345678
Error invalid entry!

Please enter sin number: 0123456789
Error invalid entry!

Please enter sin number: asdf
Error invalid entry!

Please enter sin number: 999999999
Entered number: 999999999

在這里查看工作示例... https://dotnetfiddle.net/eHNy2O

這應該工作

var digits = int.Parse(Console.ReadLine());

while (digits.Length > 9 || digits.Length < 9)
{
    Console.WriteLine("Error invalid entry");
    // then add something like this
    Console.Write("Enter a number: ");
    digits = int.Parse(Console.ReadLine());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM