嘿我试图解决这个问题,但Kattis说我得到运行时错误,这意味着未捕获的异常。 https://open.kattis.com/problems/fizzbuzz
我的代码中是否有任何遗漏了应用程序崩溃的内容?
public static void Main(string[] args)
{
string line = "";
while ((line = Console.ReadLine()) != "0")
{
var numbers = line.Split(' ').Select(int.Parse).ToList();
int x = numbers[0];
int y = numbers[1];
int N = numbers[2];
for(int i = 1; i <= N; i++)
{
bool found = false;
bool found2 = false;
if(i % x == 0)
{
if(i % y==0)
{
Console.WriteLine("FizzBuzz");
found2 = true;
}
else
{
Console.WriteLine("Fizz");
found = true;
}
}
if(i % y == 0 && !found2)
{
Console.WriteLine("Buzz");
found = true;
}
if(!found && !found2)
{
Console.WriteLine(i);
}
}
}
}
答案 0 :(得分:1)
我读到这个问题的方法是在控制台上给你一行3个数字。所以你应该只做一个ReadLine
。我建议删除while
循环,然后执行。
var numbers = Console.ReadLine().Split(' ').Select(int.Parse).ToList();
答案 1 :(得分:0)
(ABC_2017031)/1
(ABC_2017031+ABC_2017032)/2
(ABC_2017031+ABC_2017032+ABC_2017033)/3
(ABC_2017031+ABC_2017032+ABC_2017033+ABC_2017034)4
至少有3级甚至1级,没有人向你保证。
这意味着以下所有行都可以引发索引超出范围的异常:
numbers
因此,在分配上述行
之前,您需要检查int y = numbers[1];
int N = numbers[2];