这是我的第一个编程课程,我对一些概念很难。
我要做的是弹出一个框,询问用户是否有整数,这是有效的。
之后,如果整数为负,则应说“输入正数”。 然后,如果它是0,它应该说“输入一个非零数字”。
最后,如果它是偶数,它应循环四次, 如果它是一个奇数,它应该循环四次。
static void Main(string[] args)
{
Console.WriteLine("Enter an integer:");
string line = Console.ReadLine(); // Read string from console
int value;
if (int.TryParse(line, out value)) // Try to parse the string as an integer
{
Console.Write("Enter a positive number:");
Console.WriteLine(); // Multiply the integer and display it
}
else if (int.TryParse(line, out value))
{
Console.Write("Enter a non-zero number:");
string line1 = Console.ReadLine();
Console.WriteLine();
答案 0 :(得分:3)
你的条件分支有点偏。无论输入的是什么整数,您都会提示用户“输入正数”。在您的第一个if
分支内,您需要评估该数字是正数还是负数,并确定下一步该做什么。如果输入的字符串根本无法解析为整数,则TryParse
将仅为false。
if (int.TryParse(line, out value)) // Try to parse the string as an integer
{
// User entered a valid integer. Now check value<0 or value==0, else do your looping
} else {
// What user entered wasn't an integer at all. Show error.
}
请注意,您实际上不需要再阅读用户的任何输入。您需要的所有信息都在第一个ReadLine
之后提供。
答案 1 :(得分:2)
整数可能是负数,因此您的测试不正确。 &#34; -12&#34;将按预期解析为整数-12。因此,您需要测试整数是否大于0.
另外,作为&#34; D Standley&#34;如果你想继续要求用户输入一个正整数,你可能需要一个循环。下面的代码是
static void Main(string[] args)
{
int value = 0;
while(value < 1)
{
Console.WriteLine("Enter a positive integer:");
string line = Console.ReadLine(); // Read string from console
if (int.TryParse(line, out value) && value <= 0)
{
Console.WriteLine("Input is not a positive integer. Try again");
}
}
Console.WriteLine("Value=" + value);
Console.ReadKey();
}
答案 2 :(得分:1)
你应该有几个变量,这样你就可以跟踪你需要做多少循环:
int evenNumbersEntered = 0;
int oddNumbersEntered = 0;
然后你应该创建一个while循环,它将继续从用户那里获得输入,直到两个计数器中的一个达到4
// Our requirement is to loop 4 times if an even integer
// is entered and 4 times if an odd integer is entered.
while (evenNumbersEntered < 4 && oddNumbersEntered < 4)
{
// Get user input here
}
获取用户输入时,您只需执行int.TryParse
一次。如果成功,它将返回true
,否则false
。如果成功,则从字符串解析的整数将存储在变量value
中。
int value;
Console.Write("Please enter a positive integer: ");
string line = Console.ReadLine();
bool validInteger = int.TryParse(line, out value);
现在我们收到了用户的一些意见,我们需要弄清楚他们输入的内容并显示一条消息或增加一个计数器。
我们知道如果TryParse
失败,则用户没有输入整数,我们应该显示错误消息。
if (!validInteger)
{
// TryParse failed, which means the user entered a non-integer string
Console.WriteLine("ERROR: {0} is not a valid integer.", line);
}
否则,如果TryParse成功,则应检查value
是否小于零(或零),并显示相应的错误消息。
else if (value < 0)
{
Console.WriteLine("ERROR: {0} is a negative integer.", line);
}
else if (value == 0)
{
Console.WriteLine("ERROR: {0} is zero.", line);
}
最后,如果TryParse成功且值不是&lt; = 0,那么你应该检查该值是偶数还是奇数,并为循环增加适当的计数器变量。
else if (value % 2 == 0)
{
Console.WriteLine("Thank you! {0} is an even integer.", line);
evenNumbersEntered++;
}
else
{
Console.WriteLine("Thank you! {0} is an odd integer.", line);
oddNumbersEntered ++;
}
当这两个计数器中的一个达到4
时,while
循环将退出。此时,您可能希望向用户显示一些信息,并暂停程序以便他们可以阅读它。
// After the while loop
Console.WriteLine("You entered {0} even numbers and {1} odd numbers",
evenNumbersEntered, oddNumbersEntered);
Console.Write("Press any key to exit...");
Console.ReadKey();
答案 3 :(得分:1)
这是一个类似的答案,在如何分析问题以及每个步骤的作用方面将其分解。
“我想要做的是弹出一个框,要求用户提供 整数,有效。“
您已经对此部分感到满意:
Console.Write("Please enter an integer: ");
var input = Console.ReadLine();
-
“之后,如果整数为负,则应说”输入正数 数字“。然后,如果它是0,它应该说”输入一个非零数字“。”
对于这部分,我们需要做一些事情:
为此,我们将使用int.TryParse()
。此方法需要string
进行解析,并且out
整数参数将包含从字符串解析的整数(out
参数是方法保证将设置为某个值的参数当它返回时)。
int.TryParse()
如果能够将字符串成功转换为整数,则返回true
,否则返回false
。实际上,我们从这个方法中得到了两件事:
true
或false
返回值(回答问题:“字符串是整数吗?”)out
参数,它将包含整数(如果解析成功)我们创建了两个变量来捕获int.TryParse
的输出:
boolean
integer
醇>
代码如下:
int value;
bool success = int.TryParse(input, out value);
所以为了回答第一个问题,“用户输入了一个整数”,我们检查success
的值,其中包含来自int.TryParse
的返回值:
if (success == false)
{
Console.WriteLine("The value entered is not a valid integer");
}
要回答第二个问题,“是整数否定”,我们检查'value'的值
else if (value < 0)
{
Console.WriteLine("The value entered is negative");
}
要回答第三个问题,“是整数零”,我们再次检查'value'的值
else if (value == 0)
{
Console.WriteLine("The value entered is zero");
}
-
“最后,如果它是偶数,它应该循环四次 如果它是一个奇数,应该循环四次。“
现在它越来越棘手了。当用户输入有效整数时,我们需要确定它是奇数还是偶数。在任何一种情况下,听起来我们只会让他们进入一种类型中的4种。这将需要一个循环结构,我们一遍又一遍地执行我们的代码,直到用户输入4个偶数或4个奇数。
循环结构总是有一个条件,它检查每次迭代以确定它是否应该继续循环或退出。由于我们的条件是:“用户输入了4个偶数或4个奇数”,我们需要创建几个变量来跟踪这些值。变量将在循环的每次迭代中进行检查,并将使用循环内的新值进行更新(当用户输入偶数或奇数时)。
创建变量很简单,只需要几个int
来跟踪输入了多少个奇数和偶数:
int oddNumbersEntered = 0;
int evenNumbersEntered = 0;
将它们作为条件添加到循环中也不是太难。由于我们想要在两者中的一个达到4时停止循环,我们将写一些内容,“当oddNumbersEntered小于4且evenNumbersEntered小于4时,继续从用户那里得到输入”:
// As soon as one of these variables equals '4', the loop will quit
while (oddNumbersEntered < 4 && evenNumbersEntered < 4)
{
// Get user input (this is the code above)
}
但我们还需要在用户输入偶数或奇数时用新值更新这些变量,否则循环将永远继续。
我们如何知道数字是偶数还是奇数?最简单的方法是将它除以2并查看是否有任何余数。如果余数为0,那么它是偶数,否则它是奇数。
为了检查除法运算的剩余部分,我们使用模运算符(%
),它就像一个除法它只返回余数。例如,10 % 3 = 1
因为3进入10次,其余为1次。
while (oddNumbersEntered < 4 && evenNumbersEntered < 4)
{
// Get user input (this is the code above)
if (value % 2 == 0)
{
evenNumbersEntered++; // This increments our even number counter by one
}
else
{
oddNumbersEntered++; // This increments our odd number counter by one
}
}
所以这应该让我们得到一个工作程序,但由于Console应用程序将在处理完成时退出,并且我们希望用户看到一些结果,我们将在末尾添加一些代码来显示结果对用户说,然后提示他们在完成阅读后按键。
让我们看看他们输入了多少奇数和偶数:
Console.WriteLine("All done! You entered {0} even and {1} odd numbers",
evenNumbersEntered, oddNumbersEntered);
现在我们等待他们在退出前按一下键:
Console.Write("Press any key to exit...");
Console.ReadKey();
这部分是在while循环结束时进行的。
当我们将所有代码放在一起时,我们看起来像:
int oddNumbersEntered = 0;
int evenNumbersEntered = 0;
// As soon as one of these variables equals '4', the loop will quit
while (oddNumbersEntered < 4 && evenNumbersEntered < 4)
{
Console.Write("Please enter an integer: ");
var input = Console.ReadLine();
int value;
bool success = int.TryParse(input, out value);
if (success == false)
{
Console.WriteLine("The value entered is not a valid integer");
}
else if (value < 0)
{
Console.WriteLine("The value entered is negative");
}
else if (value == 0)
{
Console.WriteLine("The value entered is zero");
}
else if (value % 2 == 0)
{
evenNumbersEntered++; // This increments our even number counter by one
}
else
{
oddNumbersEntered++; // This increments our odd number counter by one
}
}
Console.WriteLine("All done! You entered {0} even and {1} odd numbers",
evenNumbersEntered, oddNumbersEntered);
Console.Write("Press any key to exit...");
Console.ReadKey();