不是造型转换的问题 其实你仔细看看是你的程序缺少返回值
假如 x即不等与0 也不大于0,也不小于0的话,(虽然x肯定符合其中一个,但是语法就不完整编译是过不去的)程序就没有返回值了
修改如下
static short floor(float x)
{
if(x==0)
return 0;
if(x>0)
return (short)x;
if(x<0)
return (short)(x-1);
return 0;
}
假如 x即不等与0 也不大于0,也不小于0的话,(虽然x肯定符合其中一个,但是语法就不完整编译是过不去的)程序就没有返回值了
修改如下
static short floor(float x)
{
if(x==0)
return 0;
if(x>0)
return (short)x;
if(x<0)
return (short)(x-1);
return 0;
}
解决方案 »
- 请大家看看这个可以多次输入的程序,但是有点问题,谁能够完善一下呢!
- String问题
- 如何用java实现从C中的struct数据类型功能???????????
- 如何集成Google用户认证以及Google Calendar等服务
- 一个比较终极的swt问题,希望高手指点,97分全部贡献...
- 什么时候用TreeSet
- 编译时,如何指定类路径?
- 关于java的串口通信的问题
- 我用EdtiPlus+JDK做Java练习,请问如何生成Exe文件呀?
- 各位哪儿有Personl web service. 100分重谢!
- 一年又过去了,感觉自己一事无成,唉!忘掉过去!2004奋发向前!
- javaMail端口问题
public class A
{
public static void main(String[] args)
{
Random random=new Random();
float temp=random.nextFloat();
float x=100*temp;
float y=-100*temp;
System.out.println("x="+x+" "+"y="+y);
System.out.println(A.floor(x)+" "+A.floor(y));
System.out.print(Math.floor(x)+" "+Math.floor(y));
}
static short floor(float x)
{
if(x==0)
return 0;
if(x>0)
return (short)x; return (short)(x-1);//must be x<0
}
}
"TestTypeCvt.java": missing return statement at line 21, column 32 大意是: 在floor()方法中遗漏了返回声明。
注意!!!这里并不是说你没有指明返回类型,如果你写成 static floor(){}; ,这就是没有指明返回类型,这样你得到的编译错误应该是
"TestTypeCvt.java": invalid method declaration; return type required at line 21, column 12 这个返回声明是指你的函数体内的return语句。不信你可以去掉方法中所有语句,写一个空方法,你会得到同样的错误。 那你这个函数体内又确实有返回语句啊,不但有还有3句之多,为什么会得到这样的提示呢?我猜想编译器这么认为:根据你的函数体内的语句(if分支),有可能三个IF全不成立,这样语句流程就会到达函数尾,而之前没有执行一句return。也就说,有这个遗漏返回的可能,所以它就报错了。你可以试着将最后一个if语句改用else代替,这样根据流程走,就必然会在函数结束之前遇上一个return语句,编译器也就乖乖的放行了。 BTW,事实上,在这里你的强制转型是没有问题的。这是我将最后一个分支改成else后的一次运行结果:x=33.360203 y=-33.36020333 -3433.0 -34.0我的开发环境是jdk1.4.1 + jb9
所以呢,在最后还是要加上一句三种情况以外的返回值,比如:return 0;
if(x==0)
return 0;
if(x>0)
return (short)x;
else
return (short)(x-1);