如何在c#中输入整数数组

时间:2014-07-22 19:48:51

标签: c#

如何在c#中输入数组中的输入。我编写了一个代码不正常的代码。例如,如果我输入1,则它给出输出49。

using System;
using System.Collections.Generic;
using System. Linq;
using System.Text;
using System.Threading.Tasks;

namespace Google
{
    class Program
    {
        static void Main(string[] args)
        {
            int n;
            int[] array=new int[26];
            Console.Write("Enter number of cases : ");
            n = Console.Read();
            for (int i = 0; i < n; i++)
            {
                array[i] = Console.Read();
                Console.WriteLine( array[i]);
            }
            Console.Read();
        }  
    }
}

8 个答案:

答案 0 :(得分:2)

Console.Read会返回字符代码,而非您输入的数字。

改为使用int.Parse(Console.ReadLine())

n = int.Parse(Console.ReadLine());
//...
array[i] = int.Parse(Console.ReadLine());

答案 1 :(得分:2)

49是对的。这个数字来自字符“1”的ascii值 来源(http://www.asciitable.com/

您需要为int包含解析器。

正如塞尔曼22所说:

array[i] = int.Parse(Console.ReadLine());

会为你效劳。

答案 2 :(得分:2)

大多数竞争性编程都将内联整数输入作为输入数组。 在这种情况下,控制台输入可以这样做:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace CSharp
{
    class Program
    {
        static void Main(string[] args)
        {

            int n;
            n =Int32.Parse(Console.ReadLine());
            int[] arr = new int[n];
            string[] s = Console.ReadLine().Split(' ');

            for (int i= 0;i< n;i++)
            {
                arr[i] = Int32.Parse(s[i]);
            }
            Console.WriteLine(n);
            foreach (var item in arr)
            {
                Console.Write(item+" ");
            }
        }
    }
}

答案 3 :(得分:1)

Console.Read方法从输入流中获取下一个字符,并将其转换为整数值,即char的ASCII值。您想要Console.ReadLine代替:

array[i] = int.Parse(Console.ReadLine());

如果要验证用户的输入,请使用int.TryParse


顺便说一下,如果你想从Read0(可能你没有)获得数字,可以使用9方法完成,但代码看起来很难看:

 array[i] = int.Parse(((char)Console.Read()).ToString());

答案 4 :(得分:1)

您正在读取字符,而不是数字,在您的情况下,它返回的ASCII值为1,即49.您应该使用正确的解析函数,如Int32.Parse(Console.ReadLine())。

答案 5 :(得分:1)

1遇到49应该是你的暗示。 49是字符&#39; 1的ASCII值。

所以发生的事情是你的Console.Read()调用返回一个char,它被隐式地转换为整数数组。

您实际上可能希望用户键入一个数字并按Enter键。所以你最好使用Console.ReadLine(),然后在你从中得到的字符串上使用int.TryParse。

答案 6 :(得分:0)

arr = Array.ConvertAll(Console.ReadLine().Trim().Split(' '),Convert.ToInt32);

答案 7 :(得分:0)

一种衬管解决方案:

var array = Console.ReadLine().Split().Select(int.Parse).ToArray();

说明

array将是从控制台输入中读取的一个整数数组,以空格分隔。

示例输入:“ 1 2 3 4 5”。