我要求用户输入5个数字并将其存储到数组中,这样我就可以在方法中发送值并从每个数组中减去5个数字。当我使用:
for(I=0;I<5;I++) {
int[] val = Console.ReadLine();}
它说我无法将int []转换为int。我的编程中有点生疏。我也不知道如何将数组值从main发送到方法。
答案 0 :(得分:6)
您将从控制台输入的字符串分配给int数组。这有两个原因:
int
数组(int[]
)是ints
的集合。int
,需要先解析。这是一个轻微的转移,但我也不认为你应该使用数组。数组中的数组通常具有比内置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数组,所以它不起作用。但是,提供的解决方案有点笨拙,因为它一次只能从控制台读取一个字符。最好一次接受所有输入。
这是一个简短的控制台程序,
包括错误处理。
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