【发布时间】:2016-04-13 18:54:12
【问题描述】:
当Fraction 对象为null 时,我正在尝试让toString 方法打印“未定义”。以下是我的类文件和测试器文件中的一些内容:
public class Fraction
{
private int num;//Short for "numerator"
private int den;//Short for "denominator"
public Fraction(int a,int b)
{
num=a;
den=b;
}
//Sample method that may result in a "null" object
public Fraction divide(Fraction frac)
{
if(den!=0&&frac.den!=0)
return new Fraction(num*frac.den,den*frac.num);
return null;
}
public String toString()
{
simplify();
if(this==null)
return "undefined";
if(den==0||this==null)
return "undefined";
if(den==1||num==den)
return num+"";
return num+"/"+den;
}
}
public class FractionTest
{
public static void main(String[]args)
{
Fraction f1=new Fraction(8,0);
Fraction f2=new Fraction(2,1).divide(f1);
System.out.println(f2);
System.out.println(f2==null);
}
}
不幸的是,代码产生了这个输出:
null
true
我能做些什么来解决这个问题?
【问题讨论】:
-
你认为
this==null会做什么?你为什么这么认为? -
如果你能引用
this,那就不是null。 -
这不能在
Fraction类中完成。你需要在课堂之外处理它。 -
参考stackoverflow.com/help/mcve 您的示例将无法运行,部分原因是您没有向我们提供
divide函数 - 这可能有助于解释为什么您会得到这样的结果。