我希望我的程序用一个数字输入来填充一个数组,但是使用数字输入(然后程序将使用这些数字进行特定计算,但现在并不重要)。
如果没有输入,程序应该停止读取数字并打印它。我有几个错误,特别是在解析的情况下,因为我已经尝试了几个解决方案,我不知道在哪个部分的代码,也许是什么方式,数组中的数字应该被解析,以避免收到“不能隐式转换类型字符串为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);
}
答案 0 :(得分: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不会像解析那样抛出异常。
如果您决定使用解析,请捕获异常
答案 1 :(得分: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
标志设置为true,这将退出循环。
如果输入不为空,则使用TryParse
确定输入是否为数字。如果是,则返回true,并将转换后的输入添加到数组中,计数器递增。
如果解析失败,则提示用户输入数字。
一旦数组被填满,它就会遍历数组并打印出每个输入。
答案 2 :(得分: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]);
答案 3 :(得分: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);
}
答案 4 :(得分: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
}
答案 5 :(得分:0)
以下程序从用户读取数字。
如果用户输入的号码无效,则会报告消息:不是有效号码。
如果用户未输入任何内容,则程序将打印用户输入的所有数字。
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;
}
}
}
}
}
请告诉我,如果你没事的话。