嗨,我有一个问题,我差点解决了。这是我的问题: 让我们编写一个控制台应用程序,打印一系列整数中的所有数字。 每行输入一个数字,应用程序将逐个读取,直到用户写入字符而不是数字。当用户键入x时,应用程序知道字符串中的所有数字都已输入,并按照输入的顺序逐个显示字符串中出现的所有数字。
如果数字不在字符串中,则应用程序将显示N / A文本。
示例:
输入:
4 3 6 7 X 控制台将显示:
4 6
这是我解决问题的方法:
string[] numbers = new string[10];
for(int i = 0; i < numbers.Length; i++)
{
numbers[i] = Console.ReadLine();
if(numbers[i] == "x")
{
break;
}
}
for (int i = 0; i < numbers.Length; i++)
{
if (Int32.Parse(numbers[i]) % 2 == 0)
{
Console.WriteLine(numbers[i]);
}
}
我不知道怎么做这个问题的最后一部分,那个人 要求我显示N / A文本。请帮忙!
答案 0 :(得分:1)
解决此问题的一种方法是将您的号码存储在List<int>
中。然后,当从控制台读取输入时,您可以使用int.TryParse
来确定输入是否是有效整数。如果是,如果它是偶数,则将其添加到列表中;如果不是我们可以退出循环。
然后我们可以检查列表计数以确定是否输入了任何偶数,如果计数&gt;我们将显示它们。 0或我们输出&#34; N / A&#34;。
例如:
var evenNumbers = new List<int>();
// Infinite loop is exited by the 'break' command below
while (true)
{
// If the user enters a valid integer, TryParse will store it in this
int number;
// We read a line from the console and pass it to int.TryParse, which will
// return 'true' if the input is a valid int and will store it in 'number'
// If it returns false, then we break from the loop
if (!int.TryParse(Console.ReadLine(), out number)) break;
// If the number entered is Even, add it to our list
if (number % 2 == 0) evenNumbers.Add(number);
}
// If there are any items in our list, then print them. Otherwise print "N/A"
if (evenNumbers.Count > 0)
{
foreach (int evenNumber in evenNumbers)
{
Console.WriteLine(evenNumber);
}
}
else
{
Console.WriteLine("N/A");
}
答案 1 :(得分:0)
我拿了你的代码并对其进行了一些修改。
检查bool变量是否为false,这样就可以打印N / A
string[] numbers = new string[10];
bool found = false;
for(int i = 0; i < numbers.Length; i++)
{
numbers[i] = Console.ReadLine();
if(numbers[i] == "x")
{
break;
}
}
for (int i = 0; i < numbers.Length; i++)
{
if(numbers[i] != "x")
{
if (Int32.Parse(numbers[i]) % 2 == 0)
{
found = true;
Console.WriteLine(numbers[i]);
}
}
}
if(found == false)
{
Console.WriteLine("N/A");
}
Console.ReadLine(); //So you can pause and see the output.
保持代码尽可能简单,这样你就可以看到最新情况。