C#用户输入int到数组

时间:2014-10-29 03:19:25

标签: c# arrays loops for-loop

我要求用户输入5个数字并将其存储到数组中,这样我就可以在方法中发送值并从每个数组中减去5个数字。当我使用:

for(I=0;I<5;I++) {
int[] val = Console.ReadLine();}

它说我无法将int []转换为int。我的编程中有点生疏。我也不知道如何将数组值从main发送到方法。

4 个答案:

答案 0 :(得分:6)

您将从控制台输入的字符串分配给int数组。这有两个原因:

  1. int数组(int[])是ints的集合。
  2. 您从控制台获取的值不是int,需要先解析。
  3. 这是一个轻微的转移,但我也不认为你应该使用数组。数组中的数组通常具有比内置List<T>更少的函数。 (所有的摇滚歌曲都在here中响起)有些人说根本没有理由使用数组 - 我不会那么远,但我认为对于这个用例,添加项目会容易得多到List比分配5个空格并按索引初始化值。

    无论哪种方式,您应该使用int.TryParse(),而不是int.Parse(),因为如果您不检查用户输入是否可以解析为int,您将立即获得异常。因此,从用户获取字符串的示例代码如下所示:

    List<int> userInts = new List<int>();
    
    for (int i = 0; i < 5; i++)
    {
        string userValue = Console.ReadLine();
        int userInt;
        if (int.TryParse(userValue, out userInt))
        {
            userInts.Add(userInt);
        }
    }
    

    如果您仍想使用该数组,或者必须,请将List<int> userInts ...替换为int[] userInts = new int[5];,并将userInts.Add(userInt)替换为userInts[i] = userInt;

答案 1 :(得分:2)

首先初始化数组

int[] val = new int[5];

然后当你进行for循环时:

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

提示:要将数组值从main发送到方法,只需查看static void main的形成方式:

static void Main(string[] args)

含义main接受控制台参数的字符串数组。

答案 2 :(得分:0)

您只需要先将从控制台输入的string解析为int。您可以通过以下方式接受int:

for(int i=0;i<myArray.Length;i++) {

  myArray[i] = int.Parse(Console.ReadLine()); //Int32.Parse(Console.ReadLine()) also works

就像@Furkle说的那样,最好使用TryParse()来执行异常处理。 MSDN对此有一个很好的tutorial

答案 3 :(得分:0)

furkle是正确的,因为console.ReadLine方法返回一个字符串,并且不能将字符串分配给int数组,所以它不起作用。但是,提供的解决方案有点笨拙,因为它一次只能从控制台读取一个字符。最好一次接受所有输入。

这是一个简短的控制台程序,

  • 从用户处获取空格分隔的整数列表
  • 使用Split(''..ToList();
  • 将字符串转换为字符串列表
  • 将字符串List转换为int List
  • 将内容读回给您。

包括错误处理。

test.js

如果要确保用户仅输入5个整数,则可以执行DO WHILE循环,如下所示:

    static void Main(string[] args){

    var intList = new List<int>();
    string sUserInput = "";
    var sList = new List<string>();
    bool validInput = true;

    do
    {
        validInput = true;
        Console.WriteLine("input a space separated list of integers");
        sUserInput = Console.ReadLine();
        sList = sUserInput.Split(' ').ToList();

        try
        {
            foreach (var item in sList) {intList.Add(int.Parse(item));}
        }
        catch (Exception e)
        {
            validInput = false;
            Console.WriteLine("An error occurred. You may have entered the list incorrectly. Please make sure you only enter integer values separated by a space. \r\n");
        }
    } while (validInput == false);

    Console.WriteLine("\r\nHere are the contents of the intList:");
    foreach (var item in intList)
    {
        Console.WriteLine(item);
    }

    Console.WriteLine("\r\npress any key to exit...");
    Console.ReadKey();
    }//end main