新Java程序员,基本Java组合
我是一名计算机编程的新学生。我看了一个关于Java、基本组合的视频,视频中的那个家伙就这个主题做了一个例子,如下所示:新Java程序员,基本Java组合,java,composition,Java,Composition,我是一名计算机编程的新学生。我看了一个关于Java、基本组合的视频,视频中的那个家伙就这个主题做了一个例子,如下所示: public class PaperTray { int pages = 0; .... public boolean isEmpty() { return pages > 0; } } 我的问题是,如果纸盘是空的,那么在PaperTray类中,方法isEmpty()将返回false。因此,不会执行类打印机中的if语句。如果纸盘不是空的,P
public class PaperTray
{
int pages = 0;
....
public boolean isEmpty()
{
return pages > 0;
}
}
我的问题是,如果纸盘是空的,那么在PaperTray类中,方法isEmpty()将返回false。因此,不会执行类打印机中的if语句。如果纸盘不是空的,PaperTray类中的方法isEmpty()将返回true,因此不会执行Printer类中的while语句。 是我错了,还是视频剪辑中的讲师犯了一些错误 多谢各位 如果纸盘是空的,则在类
纸盘中
方法isEmpty()
将返回false
它应该返回true
(对于任何合理的实现,即:-)。对于名为isEmpty()
的方法,根据常识,当封闭对象/集合为空时,它返回true
,当它不为空时,返回false
换句话说,您上面展示的实现有一个bug。的逻辑是空的没有意义:我也希望如此
public boolean isEmpty() {
return pages == 0;
}
或
是的,你说的是对的
isEmpty()
为空时应返回true。可能是讲师部分出错。代码中缺少某些内容:当复制时,只有复制
减少。但是,代码还应减小纸盒中页面的值,否则就不会使用纸张进行复印
发生这种情况时,代码是正确的:
while(copies > 0 && !paperTray.isEmpty() )
{
System.out.println("some text to print");
copies--;
}
if(paperTray.isEmpty())
{
System.out.println("load paper");
}
只要纸盘中有纸,它就会继续制作所需数量的副本。当没有纸张时,while循环将退出。无论哪种方式,最后都会执行一项检查,以告知用户在纸盘空时重新填充纸盘。此代码似乎有几个问题:
public boolean isEmpty(){
//return pages > 0; this doesnt make sense
return pages==0;
}
public void print(int copies){
while(copies > 0 && !paperTray.isEmpty()){
System.out.println("some text to print");
pages--;//this is not enough. You need to decrement copies as well
}
if(paperTray.isEmpty())
System.out.println("load paper");
}
我是视频中的讲师。
谢谢你抓住了这个错误。你说得对。在录制视频的某个时候,我一定在那里有>0,而不是你将PaperTray中的方法命名为isEmpty(),因此从逻辑上讲,当托盘为空时,它应该返回true。此代码由名为John Sonmez的讲师在PluralSight页面上编写是的,也有一种方法可以减小PaperTray中页面的值,但我想说的是,如果视频中的讲师在方法isEmpty()上犯了错误,并且如果纸盘不是空的,那么方法isEmpty()是否返回true。因此,页面的初始值是0,因此如果纸盘是空的,这意味着页面是0,0不能大于0,因此方法是空的()应该返回false???@JackyNguyen,确实是这样-现在。这就是为什么我写到isEmpty()
的当前实现是不正确的:它应该在页面==0
时返回true
;在while循环中有点扭曲,现在可以工作了。谢谢你。嗨,约翰,我真的很喜欢你的课程,它真的很有帮助,尤其是集合和通用模块。我希望你能发布更多的高级Java课程,比如用数据库用Java编程,。。。再次感谢你。
while(copies > 0 && !paperTray.isEmpty() )
{
System.out.println("some text to print");
copies--;
}
if(paperTray.isEmpty())
{
System.out.println("load paper");
}
public boolean isEmpty(){
//return pages > 0; this doesnt make sense
return pages==0;
}
public void print(int copies){
while(copies > 0 && !paperTray.isEmpty()){
System.out.println("some text to print");
pages--;//this is not enough. You need to decrement copies as well
}
if(paperTray.isEmpty())
System.out.println("load paper");
}
public class PaperTray
{
int pages = 0;
....
public boolean isEmpty()
{
return pages <= 0;
}
}