public class Horse { public static void main(String args[]) { int count = 0; for (int a = 0; a < 34; a++) { for (int b = 0; b <= (100 - 3 * a) / 2; b++) { int d = 100 - 3 * a - 2 * b; if (d > 0 ) { System.out.println("a=" + a + "|b=" + b + "|c=" + d * 2); count++; } } } System.out.println("there are " + count + "ways to process"); } }
我的理由是 最后有强转。也就是四楼的意思。
return (short) x/y * 2; 返回一个short类型的啊!
public static void main(String args[]) {
int count = 0;
for (int a = 0; a < 34; a++) {
for (int b = 0; b <= (100 - 3 * a) / 2; b++) {
int d = 100 - 3 * a - 2 * b;
if (d > 0 ) {
System.out.println("a=" + a + "|b=" + b + "|c=" + d * 2);
count++;
}
}
}
System.out.println("there are " + count + "ways to process"); }
}
return (short) x/y * 2; 1、首先将x强制转换成short类型
2、short类型的x除以double类型的y,结果为double类型,再乘以2
3、返回值类型returnType为double类型
那returnType methodA(byte x, double y) {
return (short) x/y * 2;
方法的类型必须要比short精度更高,而且在方法参数里头声明了参数y是double类型
所以方法的返回类型肯定是double了
所以最后隐式转换为double类型了
public class returnIt{
returnType methodA(byte x, double y) {
return (short) x/y * 2;
}
} 首先执行强制类型转换:把x强制转换为了short型,然后x/y -->short/double,java会自动转换为最高级别类型:double,然后double类型的(x/y)再*2,还是double类型