如果有代码,还有其他写方法吗?

里皮特

我刚刚开始学习C#。我对是否以及是否感到最自在。现在,我正在开发一个程序,该程序在其中写入IP地址,并且需要键入正确的子网以及所有其他内容。使用if和else编写代码花费的时间太长,所以我想知道是否有一种更快的方法。

Random r = new Random();
            int randomip = r.Next(256);
            int secondip = r.Next(256);
            int subnetip = r.Next(24, 31);
            int numbers = subnetip;

Console.WriteLine("192.168." + randomip + "." + secondip + "/" + subnetip);

            Console.Write("Type the correct netID: ");
            Console.ReadLine();
            Console.Write("Type the correct subnet: ");
            Console.ReadLine();


            if (numbers == 24)
            {
                Console.WriteLine("correct netID is: 192.168." + randomip + 
                "." + secondip / 256);
                Console.WriteLine("correct subnet is: 255.255.255.0");
            } else if (numbers == 25)
            {
                Console.WriteLine("correct netID is: 192.168." + randomip + 
                "." + secondip / 128);
                Console.WriteLine("correct subnet is: 255.255.255.128");
            } else if (numbers == 26)

以此类推...与其他数字一起使用。有没有更快,更轻松的方法来使其工作?它可以工作,但是如果我想增加更多的数字,那将会是一个问题

乍得·黑格考克

如果您倒想,这些是根据 numbers

31 => 2
30 => 4
29 => 8
28 => 16
27 => 32
26 => 64
25 => 128
24 => 256

换句话说,它们是递增数字的幂的两倍。

31 => 2^1
30 => 2^2
29 => 2^3
28 => 2^4
27 => 2^5
26 => 2^6
25 => 2^7
24 => 2^8

换句话说,2以32的幂减去 numbers

31 => 2^(32-31)
30 => 2^(32-30)
29 => 2^(32-29)
28 => 2^(32-28)
27 => 2^(32-27)
26 => 2^(32-26)
25 => 2^(32-25)
24 => 2^(32-24)

换一种说法,

var divisor = Math.Pow(2, 32-numbers);
var subnet = 256 - divisor;

下降到4行,没有switchif好极了!

Console.WriteLine("correct netID is: 192.168." + randomip + "." + secondip / divisor);
Console.WriteLine("correct subnet is: 255.255.255." + subnet);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

查找所有其他记录的ID(如果有记录)

这段代码有错误吗?如果有,在哪里

Android:如果有用户登录,则开始其他活动

如果有镜子,激光会忽略其他物体

CSS(如果有其他条件),移动人像或风景

从其他表中选择MAX值(如果有)

参数,如果有开关,则不允许其他参数

如果有其他非 Null 值,则删除 Null

如果有匹配项,则基于其他数据框进行过滤

如果有其他条件,则根据返回的数据类型应用

如果语句忽略返回方法,还有其他解决方案吗?

还有其他方法可以实现此代码,以便也使用zip函数吗?

如果有陈述,有什么方法可以缩短此时间吗?

还有其他写此查询的方法吗?(我收到“子查询返回了多个值错误”

如果有,则在bash中转发退出代码

如果有人请解释代码?

还有其他解决此查询的方法吗?

Kotlin when(Pair <>),还有其他方法吗?

还有其他选择HTML元素的方法吗?

还有其他获取日期格式的输入的方法吗?

还有其他加载精灵的方法吗?

PHP还有很多其他方法吗?

如果有副作用,可以优化功能吗?

是临时文件吗?如果有多久?

是我的逻辑还是我写的语法错误?(如果还有其他语法)

SQL-如果还有其他

最小化IO Monad对我的代码的影响的普遍接受的方法是(如果有)

Terraform(AzureRM)是否可以(如果有条件)拥有其他资源部署条件?

还有其他GXT主题吗?