首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java教程.isEmpty()方法

Java教程.isEmpty()方法
EN

Stack Overflow用户
提问于 2014-01-22 16:51:27
回答 2查看 426关注 0票数 0

我有3个类(打印机、PaperTray和机器)和我的主要Java类(HelloWorld)。

我期待看到“载入更多的纸张!”当这个"myPrinter.print(2)“被调用时,输出显示”我的打印机打开了!“两次,好像托盘里有纸。如果有足够多的纸张被传递到loadPaper中(在加载文件开始工作之前,该文件暂时已被注释掉),我应该只看到显示打印机两次的输出:

代码语言:javascript
运行
复制
import printing.Printer;

public class HelloWorld {

public static void main(String[] args) 
{
    Printer myPrinter = new Printer(true, "MY PRINTER");
    //myPrinter.loadPaper(3);
    myPrinter.print(2);
}
}

我的打印机班:

代码语言:javascript
运行
复制
package printing;

public class Printer extends Machine
{
    private String modelNumber;
    private PaperTray paperTray = new PaperTray(); //printer now HAS paper tray

public Printer(boolean isOn, String modelNumber)
{
    super(isOn); //calls the constructor of the machine class - Super calls inherited parent
    this.modelNumber = modelNumber;
}

public void print(int copies) 
{
    String onStatus = "";
    if(isOn)
    {
        onStatus = " is On!";
    }
    else
    {
        onStatus = " is Off!";
    }

    String textToPrint = modelNumber + onStatus;

    while(copies > 0 && !paperTray.isEmpty())
    {
        System.out.println(textToPrint);
        copies--;
        paperTray.usePage();
    }

    if(paperTray.isEmpty())
    {
        System.out.println("Load more paper!");
    }   
}

//for each 
public void printColours()
{
    String[] colours = new String[] {"Red", "Blue", "Green", "Yellow" };

    //for current colour "in" colours
    for(String currentColour : colours)
    {
        if("Green".equals(currentColour))
        {
            continue;
        }
        System.out.println(currentColour);
    }
}

public void print(String text) 
{
    System.out.println(text);
}

public String getModelNumber()
{
    return modelNumber;
}

public void loadPaper(int count) 
{
    paperTray.addPaper(count);
}

}

当调用".isEmpty()“时,页面的值是-2,但我认为".isEmpty()”只在值等于0时才有效?所以我猜这就是我的问题所在。然而,我所拥有的代码(99%肯定)与导师示例相同。

PaperTray类是:

代码语言:javascript
运行
复制
public class PaperTray {

int pages = 0;

public void addPaper(int count) 
{
    pages += count;
}

public void usePage()
{
    pages--;
}

public boolean isEmpty()
{
    return pages > 0;
}
}

机器类:

代码语言:javascript
运行
复制
public class Machine {

protected boolean isOn;

public Machine(boolean isOn)
{
    this.isOn = isOn;
}

public void TurnOn()
{
    isOn = true;
}

public void TurnOff()
{
    isOn = false;
}

}

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-22 16:55:20

isEmpty()方法在PaperTray中是错误的,它现在返回true if pages > 0 (当它已满时),并返回false if pages <= 0 (当它是空的)。

您需要将条件切换为pages == 0或绝对确定为pages <= 0

票数 2
EN

Stack Overflow用户

发布于 2014-01-22 16:55:02

您的isEmpty()定义似乎是错误的

代码语言:javascript
运行
复制
public boolean isEmpty()
{
    return pages > 0; //shouldn't it be pages <=0 ?
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21289019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档