[英]C# Collatz - Does anyone know a fix?
嘿,有沒有人解決這個問題? 我不知道為什么我不斷收到 main-cs 和編譯失敗的錯誤。
using System;
class MainClass {
public static void Main (string[] args) {
Console.WriteLine ("Length of Collatz Row");
int cn = Console.ReadLine();
CollatzListLength(cn);
}
public int CollatzListLength(n){
int number;
List<int> numbers = new List<int>();
while(n != 1){
if(n % 2 == 0){
number = n/2;
}
if(n%2 ==1){
number = n*3 + 1;
}
n = number;
numbers.Add(number);
}
return numbers.Count;
}
Console.ReadLine()
返回一個string
,而不是一個整數。
CollatzListLength
需要為static
並且參數需要聲明為int
n = number;
不起作用,因為number
可能永遠不會被賦值。 使用else
而不是if (n % 2 == 1)
因為它只是檢查其他可能的條件。
總共:
static void Main(string[] args)
{
Console.WriteLine("Length of Collatz Row");
if (int.TryParse(Console.ReadLine(), out int cn))
CollatzListLength(cn);
else
Console.WriteLine("Needs a number");
}
public static int CollatzListLength(int n)
{
int number;
List<int> numbers = new List<int>();
while (n != 1)
{
if (n % 2 == 0)
{
number = n / 2;
}
else
{
number = n * 3 + 1;
}
n = number;
numbers.Add(number);
}
return numbers.Count;
}
不過,我實際上並沒有檢查過代碼的完整性。
另一種方法,修復編譯沒有錯誤信息:
using System;
using System.Collections.Generic;
class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Length of Collatz Row");
int cn = int.Parse(Console.ReadLine());
int len = CollatzListLength(cn);
Console.WriteLine($"len {len}");
}
public static int CollatzListLength(int n)
{
int number = 0;
List<int> numbers = new List<int>();
while (n != 1)
{
if (n % 2 == 0)
{
number = n / 2;
}
if (n % 2 == 1)
{
number = n * 3 + 1;
}
n = number;
numbers.Add(number);
}
return numbers.Count;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.