如果是数字,如何使用用户输入填充数组

时间:2013-08-06 08:46:38

标签: c# parsing

我希望我的程序用一个数字输入来填充一个数组,但是使用数字输入(然后程序将使用这些数字进行特定计算,但现在并不重要)。

如果没有输入,程序应该停止读取数字并打印它。我有几个错误,特别是在解析的情况下,因为我已经尝试了几个解决方案,我不知道在哪个部分的代码,也许是什么方式,数组中的数字应该被解析,以避免收到“不能隐式转换类型字符串为int“或”不能隐式转换int []类型为int“。

我的代码如下:

public static void Main (string[] args)
    {
        int[] userInput = new int[100];
        int xuserInput = int.Parse (userInput);

        for (int i = 0; i<userInput.Length; i++)
        {
            userInput[i] = Console.ReadLine ();

            if (userInput == "")
                break;
        }
        Console.WriteLine (userInput);
    }

6 个答案:

答案 0 :(得分:2)

您应该将输入转换为字符串并尝试将其解析为整数:

  public static void Main(string[] args)
  {
     int[] userInput = new int[100];
     int counter = 0;

     for (counter = 0; counter < userInput.Length; counter++)
     {
        string input = Console.ReadLine();

        if (input == "")
           break;
        else
           int.TryParse(input, out userInput[counter]);
     }

     for (int i = 0; i < counter; i++)
     {
        Console.WriteLine(userInput[i]);            
     }

     Console.ReadLine();
  }

try parse不会像解析那样抛出异常。

如果您决定使用解析,请捕获异常

答案 1 :(得分:2)

试试这个:

int[] userInputs = new int[100];
int parsedInput;
int inputs = 0;
bool stop = false;

while (inputs < 100 && !stop)
{

    string userInput = Console.ReadLine();

    if (userInput == "")
    {
        stop = true;
    }
    else if (Int32.TryParse(userInput, out parsedInput))
    {
        userInputs[i] = parsedInput;
        inputs++;
    }
    else
    {
        Console.WriteLine("Please enter a number only!");
    } 
}

for each (int number in userInputs)
{
    Console.WrietLine(number.ToString());
}

这段代码做了一些事情。

首先,while循环用于确保用户输入100个数字或不输入任何数据。

接下来,它获取用户的输入。如果它是一个空输入,它会将stop标志设置为true,这将退出循环。

如果输入不为空,则使用TryParse确定输入是否为数字。如果是,则返回true,并将转换后的输入添加到数组中,计数器递增。

如果解析失败,则提示用户输入数字。

一旦数组被填满,它就会遍历数组并打印出每个输入。

答案 2 :(得分:0)

问题是您正在解析userInput这是一个int.Parse的数组,而不是解析Console.ReadLine()

所得的输入
int xuserInput = int.Parse (userInput); // Remove this statement.

要解析用户输入,您需要像这样解析

string input = Console.ReadLine ();
if (input == "")
    break;
else
    int.TryParse(input, out userInput[i]);

答案 3 :(得分:0)

试试这个。

public static void Main (string[] args)
{
    int[] userInput = new int[100];
    int xuserInput = int.Parse (userInput);

    for (int i = 0; i<userInput.Length; i++)
    {
        int temp = int.Parse(Console.ReadLine());
        userInput[i] = temp;

        if (userInput == "")
            break;
    }
    Console.WriteLine (userInput);
}

答案 4 :(得分:0)

你可能想要使用这个

    static void Main(string[] args)
    {
      int[] userInput = new int[100];
      string recievedInput = "";  
    for (int i = 0; i<userInput.Length; i++)
    {
        recievedInput = Console.ReadLine();
        int.TryParse(recievedInput, out userInput[i]);
        if (recievedInput == "")
            break;
    }
    Console.WriteLine (userInput); //this will only print the type name of Userinput not all element  
    }

答案 5 :(得分:0)

以下程序从用户读取数字。

如果用户输入的号码无效,则会报告消息:不是有效号码。

如果用户未输入任何内容,则程序将打印用户输入的所有数字。

class Program
{
    static void Main(string[] args)
    {
        int[] userInput = new int[10];
        for(int count = 0; count <= 9; count++)
        {
            int number;
            string input = Console.ReadLine();
            bool result = Int32.TryParse(input, out number);
            if (result)
            {
                userInput[count] = number;
            }
            else if (!result)
            {
                if (input != string.Empty)
                    Console.WriteLine("Not a valid number.");
                else if (input.Equals(string.Empty))
                {
                    foreach (var item in userInput)
                    {
                        Console.WriteLine(item.ToString());
                    }
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey(true);
                    return;
                }
            }
        }
    }
}

请告诉我,如果你没事的话。