0

TheMethod() から Main に戻り値を渡し、if ステートメントが true として渡された場合に単語を表示するのに問題があります。

これを行う 2 つの方法を考えましたが、どちらもうまくいきませんでしたが、synatx が不足していると思います。

  1. return ?; の使用 非 void メソッドを呼び出して、戻り値を表示します。
  2. voidメソッドを使って実際に書き出す(下の例)

そうです、私はこれが初めてですが、非常に多くの反復を行ったので、すべてが混ざり合っており、何を試したかを忘れてしまいました. 構文に関するヘルプは、これらの方法のいずれにも役立ちます。

基本的に、数字を繰り返すために必要です

1,2,3,4 であり、現在の反復が if ステートメントの式と一致するかどうかに応じて、単語が表示されます。

例:

if (3 = i)
{
   Console.WriteLine("Word");
}

コード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Proj5
{
class Program
{
    int i = 0;



    static void Main(int i)
    {

        for (i = 0; i < 101; i++)
        {

            Console.WriteLine("test");
        }
    }

    string TheMethod(int i)
    {
        string f = "Word1";
        string b = "Word2";


        if (i == 3)
        {
            return f;
        }

        if (i == 5)
        {
            return b;
        }

        if (0 == (i % 3))
        {
            return f;
        }

        if (0 == i % 5)
        {
            return b;
        }
        else
        {
            return b;
        }

    }
}
}
4

2 に答える 2

1

注:i == 5で、i%5 == 0の場合は必要ありません。%は "mod"であり、除算後の余りを意味します。したがって、5/5 = 1であり、余りはないので5 mod 5 = 0 .. ..

FizzBu​​zzを試すための大まかなガイド/修正は次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Proj5
{
class Program
{
    private static void Main()
    {
        for (int i = 0; i < 101; i++)
        {
            Console.WriteLine(TheMethod(i));
        }
    }

    string TheMethod(int i)
    {
        string f = "Fizz";
        string b = "Buzz";

        if ((i % 3 == 0) && (i % 5 == 0))
        {
            return f+b;
        }
        if (i % 3 == 0)
        {
            return f;
        }

        if (i % 5 == 0)
        {
            return b;
        }

        return i.ToString();

    }
}
}

ただし、よりクリーンなソリューションがあります。

string result = "";
for (int i = 1; i < = 101; ++i)
{
    if ((i % 3 == 0) && (i % 5 == 0)) result += "FizzBuzz";
    else if (i % 3 == 0) result += "Fizz";
    else if (i % 5 == 0) result += "Buzz";
    else result += i.ToString();
    result += ", ";
}

または、LINQ-y Lambasを好む場合:

public static void FizzBuzz()
{
    Dictionary<Func<int, bool>, Func<int, string>> rules = new Dictionary<Func<int, bool>, Func<int, string>>();
    rules.Add(x => x % 5 == 0 && x % 3 == 0, x => “fizzbuzz”);
    rules.Add(x => x % 3 == 0, x => "fizz");
    rules.Add(x => x % 5 == 0, x => "buzz");
    rules.Add(x => x % 5 != 0 && x % 3 != 0, x => x.ToString());
    rules.Add(x => true, x => "\n");

    var output = from n in Enumerable.Range(1, 100)
                 from f in rules
                 where f.Key(n)
                 select f.Value(n);

    output.ToList().ForEach(x => Console.Write(x));
}
于 2012-06-25T03:12:53.360 に答える
1

非静的変数 (i) およびメソッド (TheMethod) を静的Mainクラス内から参照することはできません。これを試して:


class Program
{
static void Main()
{
    for (int i = 0; i < 101; i++)
    {
        Console.WriteLine(TheMethod(i));
    }
}

static string TheMethod(int i)
{
    string f = "Word1";
    string b = "Word2";

    if (i%3 == 0) return f;
    if (i%5 == 0) return b;
    return b;
}
}
于 2012-06-25T03:03:31.443 に答える