gpt4 book ai didi

java - 如何将此代码优化为更少的代码行

转载 作者:行者123 更新时间:2023-12-03 04:58:38 25 4
gpt4 key购买 nike

如何优化这段代码。

我想减少代码行数。

public class CoolDude {
public static void main(String[] args) {
for(int i = 100; i <= 500; ++i) {
if(i%5 == 0 && i%11 == 0) {
System.out.print("Cool Dude- ");
System.out.print(i + "\n");
} else if (i%5 == 0) {
System.out.print("Cool - ");
System.out.print(i + "\n");
} else if (i%11 == 0) {
System.out.print("Dude - ");
System.out.print(i + "\n");
}
}
}

}

有什么办法吗?

最佳答案

同时Stephen M Irving's answer非常准确,并纠正了您问题中发现的所有信念,这仍然回答了您的问题,试图最大限度地减少陈述数量。

public class CoolDude {
public static void main(String[] args) {
for (int i = 100; i <= 500; i++)
if (i % 5 == 0 || i % 11 == 0) // This is the condition where we decide to print something
System.out.printf("%s%s- %d%n", i % 5 == 0 ? "Cool " : "", i % 11 == 0 ? "Dude " : "", i);
}
}

但是,此代码重复了最昂贵的部分之一:模数。另外,这个解决方案不可读!

在尝试找出解决方案时,尝试多个 KPI,然后找到最佳的优化方案很有用。在这种情况下,您想要优化行数,这绝对不是您在上面看到的最好的。如果有任何事情首先尝试获得一个可行的解决方案,然后是一个可读的解决方案,最后是一个优化的解决方案,您可以在其中记录优化的原因,以便保持可读性。

例如,这是我能想到的最优化的版本。它肯定包含更多行,但也肯定更快,因为我跳过所有无效数字并且从不执​​行模运算(整个程序仅进行两次除法和两次乘法)。

public class CoolDude {
public static void main(String[] args) {
final int min = 100;
final int max = 500;
for (int i5 = nextMultiple(min, 5), i11 = nextMultiple(min, 11); i5 <= max || i11 <= max; ) {
if (i5 < i11) {
System.out.printf("Cool - %d%n", i5);
i5 += 5;
} else if (i11 < i5) {
System.out.printf("Dude - %d%n", i11);
i11 += 11;
} else { // i5 == i11
System.out.printf("Cool Dude - %d%n", i5);
i5 += 5;
i11 += 11;
}
}
}
static int nextMultiple(int number, int divisor) {
int roundToLower = (number - 1) / divisor * divisor;
return roundToLower + divisor;
}
}

关于java - 如何将此代码优化为更少的代码行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60210270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com