[英]C# use a method to check if number is Prime, not Prime or negative
对于学校实习学校作业,我们必须创建一个小程序,该程序使用布尔方法来计算数字是否为质数。 它还必须检查数字是否为负。 如果输入0,它将停止询问数字并结束程序。 (我添加了作业的屏幕截图)
我设法使总理检查部分。 当我输入一个负数时,它将显示:负数,此后仍会计算它是质数是还是否。 与结束程序相同。 它首先计算0是否是质数,然后结束。
我该如何解决?
这是我的代码:
static void Main(string[] args)
{
int entered_number = 1;
while (entered_number != 0)
{
//ask for user entry
Console.Write("enter a number: ");
entered_number = int.Parse(Console.ReadLine());
if (entered_number < 0)
{
Console.WriteLine("Number is negative");
}
//variable for subprogram
bool prime = IsPrimeNumber(entered_number);
//output
if (prime == true)
{
Console.WriteLine("Number is Prime");
}
else if (prime == false)
{
Console.WriteLine("Number is not Prime");
}
}
Console.WriteLine("End of program");
Console.ReadKey();
}
//subprogram
static bool IsPrimeNumber(int entered_number)
{
//count
int count = 0;
for (int i = 1; i <= entered_number; i++)
{
if (entered_number % i == 0)
{
count++;
}
}
if (count == 2)
{
return true;
}
else if (count != 2 && entered_number != 0)
{
return false;
}
return false;
}
如果有人知道怎么办,请告诉我。
此致,
马克斯·范·凯克伦
在while
循环之前,至少要求用户输入一次。 这将确保如果他们输入的第一个数字为0,程序将按预期结束。 当前,它在第一次运行时使用1,然后要求用户输入并始终运行所有代码。 至于您的if (entered_number < 0)
语句,宁愿将所有代码作为else语句放置到此if语句中,以便如果该数字为负数,则程序只要求用户再次输入即可。 参见下面的示例(我省略了第一个建议,您需要自己进行一些编码:p):
while (entered_number != 0)
{
//ask for user entry
Console.Write("enter a number: ");
entered_number = int.Parse(Console.ReadLine());
if (entered_number < 0)
{
Console.WriteLine("Number is negative");
}
else
{
//variable for subprogram
bool prime = IsPrimeNumber(entered_number);
//output
if (prime == true)
{
Console.WriteLine("Number is Prime");
}
else if (prime == false)
{
Console.WriteLine("Number is not Prime");
}
}
}
Console.WriteLine("End of program");
Console.ReadKey();
使用do while
,您的代码将至少执行一次。
int entered_number = 0;
do
{
//ask for user entry
Console.Write("enter a number: ");
entered_number = int.Parse(Console.ReadLine());
if (entered_number < 0)
{
Console.WriteLine("Number is negative");
}
else if (entered_number > 0)
{
Console.WriteLine(IsPrimeNumber(entered_number) ? "Number is Prime" : "Number is not Prime");
}
else
{
break;
}
}
while (entered_number != 0);
Console.WriteLine("End of program");
Console.ReadKey();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.