首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java面试 >

关于一路java面试题的分析

2012-08-17 
关于一道java面试题的分析有这么一道题,求两个数相除的商,有个面试者写了如下方法public double getShang(

关于一道java面试题的分析

有这么一道题,求两个数相除的商,有个面试者写了如下方法

public double getShang(int i,int j){
 try{
  double shang=i/j;
  return shang;
 }catch(Exception e){
  return 0;
 }
}

初略的看下,貌似没有啥问题,因为关于两个数相除最主要是要考虑到除数不能为0,为0报异常。这里有异常捕获,因而我们不考虑除数为0的情况了。即便如此,结果真的正确吗?我们将其测试一下

public class VarTest {
public static void main(String[] args) {
 VarTest test=new VarTest();
 System.out.println(test.getShang(1,2));
}
public double getShang(int i,int j){
 try{
  double shang=i/j;
  return shang;
 }catch(Exception e){
  return 0;
 }
}
}

按照上面的测试。1除以2,结果应该是0.5,但是输出的结果却是0.0,显然不正确,那么错误出在哪里呢?

在学习java时候,我们记得书上有这么一句话,两个整数相除,结果还是整数,也就是说1/2结果会是0而非0.5,那么怎么才能得到正确答案呢?

既然两个整数相除结果是整数,那么我们就将其中一个整数转化成非整数吗,即代码可以改成如下

double shang=i*1.0/j;或者double shang=(double)i/j;然后在测试一下,这时候可以得到正确的结果了

因而,作为程序员,我们平时要养成考虑各种可能发生的情况,要以计算机的思维去考虑code,多测试才能尽量减少bug

热点排行