0

我希望我的程序用用户输入填充数组,但输入数字(然后程序将使用该数字进行特定计算,但现在并不重要)。

如果没有输入,程序应该停止读取数字并打印它。我有几个错误,特别是在解析的情况下,因为我尝试了几个解决方案,但我不知道应该在代码的哪一部分以及可能以什么方式解析数组中的数字以避免收到“不能将类型字符串隐式转换为 int”或“不能将类型 int[] 隐式转换为 int”。

这就是我的代码的样子:

public static void Main (string[] args)
    {
        int[] userInput = new int[100];
        int xuserInput = int.Parse (userInput);

        for (int i = 0; i<userInput.Length; i++)
        {
            userInput[i] = Console.ReadLine ();

            if (userInput == "")
                break;
        }
        Console.WriteLine (userInput);
    }
4

6 回答 6

2

您应该将输入转换为字符串并尝试将其解析为整数:

  public static void Main(string[] args)
  {
     int[] userInput = new int[100];
     int counter = 0;

     for (counter = 0; counter < userInput.Length; counter++)
     {
        string input = Console.ReadLine();

        if (input == "")
           break;
        else
           int.TryParse(input, out userInput[counter]);
     }

     for (int i = 0; i < counter; i++)
     {
        Console.WriteLine(userInput[i]);            
     }

     Console.ReadLine();
  }

try parse 不会像 parse 那样抛出异常。

如果您决定使用解析,则捕获异常

于 2013-08-06T08:52:56.653 回答
2

尝试这个:

int[] userInputs = new int[100];
int parsedInput;
int inputs = 0;
bool stop = false;

while (inputs < 100 && !stop)
{

    string userInput = Console.ReadLine();

    if (userInput == "")
    {
        stop = true;
    }
    else if (Int32.TryParse(userInput, out parsedInput))
    {
        userInputs[i] = parsedInput;
        inputs++;
    }
    else
    {
        Console.WriteLine("Please enter a number only!");
    } 
}

for each (int number in userInputs)
{
    Console.WrietLine(number.ToString());
}

这段代码做了一些事情。

首先,使用while循环来确保用户输入 100 个数字或不输入任何数据。

接下来,它从用户那里获取输入。如果它是一个空输入,它将stop标志设置为真,这将退出循环。

如果输入不为空,则用于TryParse确定输入是否为数字。如果是,则返回 true,并将转换后的输入添加到数组中,并且计数器递增。

如果解析失败,则提示用户输入一个数字。

一旦数组被填满,它就会遍历数组并打印出每个输入。

于 2013-08-06T09:00:30.943 回答
0

问题是你正在解析userInput这是一个数组,int.Parse而不是解析你得到的输入Console.ReadLine()

int xuserInput = int.Parse (userInput); // Remove this statement.

要解析用户输入,您需要像这样解析

string input = Console.ReadLine ();
if (input == "")
    break;
else
    int.TryParse(input, out userInput[i]);
于 2013-08-06T08:52:19.960 回答
0

尝试这个。

public static void Main (string[] args)
{
    int[] userInput = new int[100];
    int xuserInput = int.Parse (userInput);

    for (int i = 0; i<userInput.Length; i++)
    {
        int temp = int.Parse(Console.ReadLine());
        userInput[i] = temp;

        if (userInput == "")
            break;
    }
    Console.WriteLine (userInput);
}
于 2013-08-06T08:52:23.647 回答
0

以下程序从用户那里读取数字。

如果用户输入无效号码,则报告消息:Not a valid number。

如果用户不输入任何内容,则程序会打印用户输入的所有数字。

class Program
{
    static void Main(string[] args)
    {
        int[] userInput = new int[10];
        for(int count = 0; count <= 9; count++)
        {
            int number;
            string input = Console.ReadLine();
            bool result = Int32.TryParse(input, out number);
            if (result)
            {
                userInput[count] = number;
            }
            else if (!result)
            {
                if (input != string.Empty)
                    Console.WriteLine("Not a valid number.");
                else if (input.Equals(string.Empty))
                {
                    foreach (var item in userInput)
                    {
                        Console.WriteLine(item.ToString());
                    }
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey(true);
                    return;
                }
            }
        }
    }
}

请让我知道,如果这对您来说可以。

于 2013-08-06T09:50:19.743 回答
0

你可能只是想用这个

    static void Main(string[] args)
    {
      int[] userInput = new int[100];
      string recievedInput = "";  
    for (int i = 0; i<userInput.Length; i++)
    {
        recievedInput = Console.ReadLine();
        int.TryParse(recievedInput, out userInput[i]);
        if (recievedInput == "")
            break;
    }
    Console.WriteLine (userInput); //this will only print the type name of Userinput not all element  
    }
于 2013-08-06T08:57:15.303 回答