我想简化以下代码:
public static void main(String[] args) {
int c1 = Integer.parseInt(args[0]);
int c2 = Integer.parseInt(args[1]);
int c3 = Integer.parseInt(args[2]);
/* 1 */if (c2 - c1 == 0) {
/* 2 */if (c1 != c3) {
c3 += c1;
/* 4 */System.out.println(c3);
/* 5 */c3 *= c2;
/* 6 */}
}
/* 7 */if (c1 == c3)
/* 8 */if (c1 - c2 == 0)
/* 9 */{
c3 += c1;
/* 10 */System.out.println(c3);
/* 11 */c3 *= c1;
/* 12 */if (c1 < c2)
c2 += 7;
/* 13 */else
c2 += 5;
/* 14 */}
/* 15 */System.out.println(c1 + c2 + c3);
}
首先c2 - c1 == 0
与c2 == c1
相同,c1 - c2 == 0
与c1 == c2
相同。此外,我可以删除if (c1 < c2)
并保留else语句的内容。
结果:
public static void main(String[] args) {
int c1 = Integer.parseInt(args[0]);
int c2 = Integer.parseInt(args[1]);
int c3 = Integer.parseInt(args[2]);
/* 1 */if (c1 == c2) {
/* 2 */if (c1 != c3) {
c3 += c1;
/* 4 */System.out.println(c3);
/* 5 */c3 *= c2;
/* 6 */}
}
/* 7 */if (c1 == c3)
/* 8 */if (c1 == c2)
/* 9 */{
c3 += c1;
/* 10 */System.out.println(c3);
/* 11 */c3 *= c1;
c2 += 5;
/* 14 */}
System.out.println(c1 + c2 + c3);
}
我的问题是现在可以简化什么?如果内部if将在外面,我可以简化if。你觉得怎么样?
答案 0 :(得分:4)
警告:我假设您的第二版代码是正确的,即您的初始简化是正确的。
if
语句的混乱可以简化为:
if (c1 == c2) {
c3 += c1;
System.out.println(c3);
if (c1 != c3) {
c3 *= c2;
} else {
c2 += 5;
c3 *= c1;
}
}
使用/* line numbers /*
作为参考点,这就是我简化的内容:
答案 1 :(得分:2)
尝试在ifs中使用一些条件运算符,如果可以执行&&
,则没有理由将它们嵌套。
if (c1 == c2 && c1 != c3) {
...
}
if (c1 == c2 && c2 == c3) {
...
}
答案 2 :(得分:0)
public static void main(String[] args)
{
int c1 = Integer.parseInt(args[0]);
int c2 = Integer.parseInt(args[1]);
int c3 = Integer.parseInt(args[2]);
if(c1 == c2)
{
c3 += c1;
System.out.println(c3);
if(c1 == c3)
{
c3 *= c1;
c2 += 5;
}
else
{
c3 *= c2;
}
}
System.out.println(c1 + c2 + c3);
}
答案 3 :(得分:0)
public static void main(String[] args) {
int c1 = Integer.parseInt(args[0]);
int c2 = Integer.parseInt(args[1]);
int c3 = Integer.parseInt(args[2]);
if (c2 == c1)
{
if(c1!= c3)
{
c3 += c1;
System.out.println(c3);
c3 *= c2;
}
else {
c3 += c1;
System.out.println(c3);
c3 *= c1;
c2 += 5;
}
}
System.out.println(c1 + c2 + c3);
}
答案 4 :(得分:0)
您不能将if语句分解出来。它们按顺序执行,第一个更改第二个值。结果发生了变化。