簡體   English   中英

C# Collatz - 有人知道修復方法嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM