Math C#可分为3(简单)

Math C#可分为3(简单),math,Math,所以我有个任务。事情是这样的。这有点复杂 程序从用户处读取3个数字 如果这些数字中没有一个可以用3分割,或者其中一个数字可以用3分割,则输入的3个数字保持不变。(案例1) 如果这些数字中有两个可以除以3,那么程序将取值较高的一个,并将其加上+1。(情况2)。但是如果这两个数字相等,那么第二个写的数字加上+1 如果所有的数字都可以除以3,那么第二个输入的数字得到+1,第三个输入的数字得到+2。(案例4): 案例1:输入:7 9 7 产出:7 案例2:投入:9-5 6 产出:10-5 6 案例3:输

所以我有个任务。事情是这样的。这有点复杂

程序从用户处读取3个数字

如果这些数字中没有一个可以用3分割,或者其中一个数字可以用3分割,则输入的3个数字保持不变。(案例1)

如果这些数字中有两个可以除以3,那么程序将取值较高的一个,并将其加上+1。(情况2)。但是如果这两个数字相等,那么第二个写的数字加上+1

如果所有的数字都可以除以3,那么第二个输入的数字得到+1,第三个输入的数字得到+2。(案例4):

案例1:输入:7 9 7 产出:7

案例2:投入:9-5 6 产出:10-5 6 案例3:输入:9 4 9 产出:9 4 10

案例4:输入:9-6 6 产出:9-5 8

这是我有的,但不起作用

class Program
{
    static void Main(string[] args)
    {

        int a, b, c;
        Console.WriteLine("Vnesite prvo stevilo: ");
        a = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Vnesite drugo stevilo: ");
        b = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Vnesite tretje stevilo: ");
        c = Convert.ToInt32(Console.ReadLine());

        if (a % 3 != 0 && b % 3 != 0 && c % 3 != 0)
        {
            Console.WriteLine(" " + a + " " + b + " " + c);
            Console.ReadKey();
        }
        else if (a % 3 == 0 && b % 3 != 0 && c % 3 != 0 || a % 3 != 0 && b % 3 == 0 && c % 3 != 0 || a % 3 != 0 || b % 3 != 0 || c % 3 == 0)
        {
            Console.WriteLine(" " + a + " " + b + " " + c);
            Console.ReadKey();
        }
        else if (a % 3 == 0 && b % 3 == 0 && c % 3 != 0 || a % 3 == 0 && b % 3 != 0 && c % 3 == 0 || a % 3 != 0 && b % 3 == 0 && c % 3 == 0)
        {
            if (a > b)
            {
                a = a + 1;
            }
            else if (b > a)
            {
                b = b + 1;
            }
            else if (b == a) ;
            {
                b = b + 1;
            }
            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);
            Console.ReadKey();
        }
        else if (a % 3 == 0 && b % 3 == 0 && c % 3 == 0)
        {
            b = b + 1;
            c = c + 1;
            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);
            Console.ReadKey();
        }

    }
}

我将调试这段代码的一部分,然后考虑以类似的方式进行其他修复。以上述代码的一部分为例演示:

(a % 3 == 0 && b % 3 != 0 && c % 3 != 0 || a % 3 != 0 && b % 3 == 0 && c % 3 != 0 || a % 3 != 0 || b % 3 != 0 || c % 3 == 0)
假设这是对三个中的一个可以被3整除的检查,我可能会考虑改写它:< /P>
((a % 3 == 0 && b % 3 != 0 && c % 3 != 0) || (a % 3 != 0 && b % 3 == 0 && c % 3 != 0) || (a % 3 != 0 && b % 3 != 0 && c % 3 == 0))
请注意,不仅添加了括号以便将内容分组在一起,而且最后一组3中包含了
&&
,而不是
|

放在括号中的原因是,您希望将事物放在一起进行评估。第一个代码行可能存在这样一个问题:如果a不能被3整除,整个表达式将短路为false,因为a为false,任何东西都将为false,类似于在常规数学中乘以0将生成0


这是我最初复制的逻辑中接近结尾的部分:

|| a % 3 != 0 || b % 3 != 0 || c % 3 == 0)
我把它改成这样:

|| (a % 3 != 0 && b % 3 != 0 && c % 3 == 0))

我用
&&
替换了两个
|
,因为这部分检查c是否可以被3整除,但a和b不是一个整体。

这不是一个家庭作业,请详细说明“它不起作用”。不编译吗?你有例外吗?输出错误?是否在调试器中运行它,查看它出错的地方?是否考虑在其中放置一些括号,以便以特定的顺序执行操作?否则,它会被解释,这通常不是一件好事,它不会按计划出来。我认为| |或&&都有问题,我不知道如何在实践中使用它。我明白,但我不能编程。我的意思是,如果我知道如何开始,我可以。你看到代码现在的工作方式有什么不同吗?这算是一个足够的开始吗?那么基本上您添加了()?