如何遍历从用户输入 c# 创建的数组
本文关键字:输入 创建 数组 用户 何遍历 遍历 | 更新日期: 2023-09-27 18:36:13
好吧,我正在尝试制作一个简单的程序,该程序利用for循环并将用户输入一次添加到数组中,这使用它
string []str = new string[10];
for (int i = 0; i < str.Length; i++)
{
Console.WriteLine("Please enter a number: ");
str[i] = Console.ReadLine();
}
但是当我尝试使用 foreach 语句遍历数组时,我收到一个错误,指出我无法将 string[] 隐式转换为 String 类型;foreach 语句是这样的:
int even=0; int odd=0;
int[] Arr=new string [] {str};
foreach (int i in Arr)
{
if (i % 2 == 0)
{
even++;
}
else
{
odd++;
}
}
这是完整的来源,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] str = new string[10];
for (int i = 0; i < str.Length; i++)
{
Console.WriteLine("Please enter a number: ");
str[i] = Console.ReadLine();
}
int even = 0; int odd = 0;
int[] Arr = new string[] { str };
foreach (int i in Arr)
{
if (i % 2 == 0)
{
even++;
}
else
{
odd++;
}
}
Console.WriteLine("There is " + even + " even numbers.");
Console.WriteLine("There is " + odd + " odd numbers");
Console.ReadLine();
Console.ReadLine();
}
}
}
更改输入代码以将用户输入直接保存在整数数组而不是字符串中
int i = 0;
int[]values = new int[10];
while(i < values.Length)
{
Console.WriteLine("Please enter a number: ");
int result;
string input = Console.ReadLine();
if(Int32.TryParse(input, out result)
{
values[i] = result;
i++;
}
else
{
Console.WriteLine("Not a valid integer");
}
}
这将避免在此行中错误,int[] Arr=new string [] {str};
您尝试从字符串数组初始化整数数组并且编译器对此不满意
除了明显的编译错误外,使用 Int32.TryParse 可以立即检查用户键入的内容是否不是整数,并且可以拒绝输入
在下面的行中,您尝试从所有输入创建一个整数数组。但实际上这种语法是不正确的。首先,您正在尝试从字符串数组中创建一个 int 数组。这是不可能的。其次,创建一个字符串数组,如下所示 new string[]{"str", "str"}
但你正在做new string[]{str[]}
.因此,为了解决所有这些问题,我建议更换
int[] Arr=new string [] {str};
跟
int[] Arr = str.Select(s => int.Parse(s)).ToArray();