-4

我有一个简单的代码问题。我想做的是:例如,如果用户只给出一个负数而不是正数,那么我想看看:

"this is not valid"

Do you want to try again <y/n>?

我已经尝试了很多与 if、if else 的组合,但是我没有看到,"do you want to try again?"或者我看到了它们和结果。

这是无效的,最大值为:0

这是不好的。

int invoer;
int max;
string repeat;

Console.WriteLine("Please give a positive number.\nIf you enter a negative number its not going to work");

do
{
    invoer = 0;
    max = 0;
    repeat = "";

    for (int i = 1; invoer >= 0; i++)
    {
        Console.Write(i + "> ");
        invoer = int.Parse(Console.ReadLine());

        if (max < invoer)
            max = invoer;
    }

    Console.WriteLine("Maximum value is: " + max);
    Console.WriteLine("do you want to try again? y/n: ");
    repeat = Console.ReadLine();
} while (repeat == "y" || repeat == "Y");
4

3 回答 3

2

我为你编辑了这段代码。它无限期地询问用户什么是正值。如果输入的值是最大值,它只会给出最大值。如果值为负数,它不会给出最大值......我相信这就是你想要的?

但是,这段代码很糟糕。我用它解决了我所能做的。如果它不是您正在寻找的东西,那么只需废弃它并重新开始,因为这种操作方式的丑陋使得它比应有的运行更加困难。

如果这是答案,那么请检查一下。

    int invoer;
    int max;
    string repeat;

    Console.WriteLine("Please give a positive number.\nIf you enter a negative number its not going to work");

    do
    {
        invoer = 0;
        max = 0;
        repeat = "";

        for (int i = 0; invoer >= 0; i++)
        {
            Console.Write(i + "> ");
            invoer = int.Parse(Console.ReadLine());

            if (max < invoer)
            {
                max = invoer;
                Console.WriteLine("Maximum value is: " + max);
            }
        }

        if (invoer < 0)
        {
            Console.WriteLine("This is not valid...");
        }


        Console.WriteLine("do you want to try again? y/n: ");
        repeat = Console.ReadLine();
    } 
    while (repeat == "y" || repeat == "Y");
}
}
}
于 2013-10-26T19:49:58.357 回答
0

如果你不能使用 int.TryParse,你总是可以在解析之前确保你的输入是数字的:

var input = Console.ReadLine();
var number = !string.IsNullOrWhiteSpace(input) ? input : "0";

var numeralExpression = new System.Text.RegularExpressions.Regex(@"^(\d|-\d)$");

if (numeralExpression.IsMatch(number))
{
    invoer = int.Parse(number);
}
于 2013-10-26T19:27:48.357 回答
0

您应该使用 uint.TryParse 而不是 int.Parse。它不会接受负数,也不会在输入无效时抛出异常。

于 2013-10-26T15:43:45.037 回答