【发布时间】:2019-04-22 06:24:47
【问题描述】:
对 C# 真的很陌生。我想检查一个整数(来自用户的输入)是正数、负数还是零。它适用于正数和零,但当我输入负数时不起作用!
我尝试将输入类型从用户更改为 int、float、decimal、double 等,但没有任何效果。还尝试了 switch 语句。 我正在使用 Visual Studio 并调试到 Mac 终端,这可能是问题吗?我可以在写其他代码的时候使用负数,比如数学题等等。
Console.Write("Enter a number: ");
int number = int.Parse(Console.ReadLine());
if (number == 0)
{
Console.Write("zero");
}
else if (number < 0)
{
Console.Write("negative");
}
else
{
Console.Write("positive");
(我也尝试过使用 switch 语句:)
Console.Write("Enter a number: ");
int number = int.Parse(Console.ReadLine());
switch(number)
{
case 0: Console.Write("zero"); break;
case -1: Console.Write("negative"); break;
case 1: Console.Write("positive"); break;
}
在这两种情况下,当输入正数或 0 时,我都会得到正确的输出,但当输入负数时,我会收到错误消息: “输入字符串的格式不正确”
【问题讨论】:
-
欢迎来到 Stack Overflow。如果您的代码的第二行失败,那么之后的代码就无关紧要了 - 导致问题的不是
if部分,而是对int.Parse的调用。您输入的是什么 exact 字符串?如果您使用的是破折号 (-) 或短破折号 (-) 而不是连字符 (-),这可能是问题的原因。如果您从此处复制并粘贴:-42 会发生什么? -
我刚刚将您的代码复制到 Visual Studio 并注意到代码是正确的,所以我认为应该是因为您的减号有问题。尝试为此使用标准输入。
-
您的帮助!我已尝试使用您建议的减号,但它仍然无法正常工作。开始相信,就像你一样,我的代码没有问题,但格式为 av my 减号。有什么建议么?!再次感谢!
-
从您对其中一个答案的评论中,我看到您使用的是
–,其字符代码为十进制8211,即EN-DASH character,而不是减号。所以这就是它不起作用的原因。当您在数字小键盘上使用减号时会发生什么? -
感谢您的帮助,现已解决。也许我在之前的答案中输入错误。我使用数字键盘减号 (-),它在 VS 中有效,但在终端中无效(作为输入)。在终端中,我现在使用减号作为终端中的输出,只需从任何输出减号的代码中返回一个负数。
标签: c# if-statement negative-integer