我是一个新的计算机编程专业的学生。我看了一个关于Java,基本组成的视频,视频中的那个人做了一个关于这个主题的例子如下:
public class PaperTray
{
int pages = 0;
....
public boolean isEmpty()
{
return pages > 0;
}
}public class Printer extends Machine
{
private PaperTray paperTray = new PaperTray();
....
public void print(int copies)
{
....
while(copies > 0 && !paperTray.isEmpty() )
{
System.out.println("some text to print");
copies--;
}
if(paperTray.isEmpty())
{
System.out.println("load paper");
}
}我的问题是,如果纸盘是空的,那么在类PaperTray中,isEmpty()方法将返回false。因此,不会执行类打印机中的if语句。如果纸盘不是空的,类PaperTray中的方法PaperTray()将返回true,因此不会执行类打印机中的while语句。是我错了,还是视频剪辑里的老师犯了一些错误?
谢谢
发布于 2012-06-26 08:22:40
isEmpty的逻辑没有意义:我也希望
public boolean isEmpty() {
return pages == 0;
}或
public boolean isNotEmpty() {
return pages > 0;
}发布于 2012-06-26 08:21:06
如果纸盘是空的,那么在
PaperTray类中,方法isEmpty()将返回false
它应该返回true (对于任何合理的实现,即:-)。对于一个名为isEmpty()的方法,常识要求它在封闭对象/集合为空时返回true,在不为空时返回false。
换句话说,上面显示的实现有一个错误。
发布于 2012-07-17 20:19:32
我是录像老师。谢谢你发现这个错误。你是对的。在录制视频的某个时候,我肯定有> 0,而不是<= 0。
抓得好。它应该是
public class PaperTray
{
int pages = 0;
....
public boolean isEmpty()
{
return pages <= 0;
}
}我检查了可下载课程的示例代码,它在那里和其他任何地方都是正确的,类出现在课程中,所以它肯定只是一个点。
再次感谢你发现了这个错误,我也为你的错误和困惑而道歉。希望你还能从这门课中受益。
https://stackoverflow.com/questions/11203325
复制相似问题