0

好吧,我正在尝试制作一个简单的程序,该程序利用 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();
        }
    }
}
4

2 回答 2

2

更改输入代码以将用户输入直接保存在整数数组而不是字符串中

    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允许立即检查用户是否键入了非整数的内容,并且您可以拒绝输入

于 2013-10-20T20:34:46.657 回答
0

在下面的行中,您尝试从所有输入中创建一个整数数组。但实际上这种语法是不正确的。首先,您尝试从字符串数组中创建一个 int 数组。这是不可能的。其次,创建了一个字符串数组, new string[]{"str", "str"}但您正在这样做new string[]{str[]}。所以要解决所有这些问题,我建议更换

int[] Arr=new string [] {str};

int[] Arr = str.Select(s => int.Parse(s)).ToArray();
于 2013-10-20T20:36:25.520 回答