如何在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();
}
}
}
答案 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
。
顺便说一下,如果你想从Read
到0
(可能你没有)获得数字,可以使用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”。