java - 尝试创建错误检查方法,以使计数器在计数器为0时不递减

标签 java class methods error-handling

我正在尝试为以下说明创建自定义Counter类和CounterDemo程序,但是我不确定如何进行错误检查(尝试编写一种名为counterOK的方法不起作用)以确保出现错误消息如果计数器尝试从零开始递减。我认为我还需要编写一种将值重置为零的方法,如错误消息中所述。我不应该能够使用编写的Counter方法将其重置吗?

说明:
在其自己的文件中编写一个计数器类。这将使您的计数器可以被任何程序使用。

计数器必须能够递增和递减1。绝对不能低于零。必须实现toString和equals,并且
测试正确。 System.out.println(“” + c1)必须工作,并且if(c1.equals(c2))必须工作
其中c1和c2是计数器的实例。包括将计数器设置为零的默认构造函数的覆盖,以及一个构造函数
允许您设置计数。

编写一个测试程序,以测试计数器的所有功能。请参阅类(class)文档中的farkleberry示例。

这项作业将测试您对课文内容的理解。它还提供了将来分配的模板。它旨在
为您提供编写商业类的基本工具,这些类在单独的文件中编写,并且始终包含toString和equals。它是
也是程序员在发布类之前如何测试其类的示例。

public class Counter {

    private int count;  //local counting variable

    public Counter()
    {
        count = 0;
    }

    public void setCounter(int newCount)
    {
        count = newCount;
    }

    public int getCounter()
    {
        return count;
    }

    public void increment1 ()
    {
        count++;
    }

    public void decrement1 ()
    {
        count--;
    }

    public String toString()
    {
        return "" + count;
    }

    public boolean equals(Counter c)
    {
        boolean result = false;
        if (this.getCounter() == c.getCounter())
        {
            result = true;
            return result;
        }
        return result;
    }

    public boolean counterOK(int check)
    {
        boolean result = true;
        if (check > 0)
        {
            return result;
        }
            else
                return false;

    }
}

public class CounterDemo {

    public static void main(String[] args) {

        //initiate objects
        Counter c1 = new Counter(), c2 = new Counter();

        //show initial state of counters
        System.out.println("Initial state");
        System.out.println("Counter1 is at " + c1.toString());
        System.out.println("Counter2 is at " + c2.toString());
        if (c1.equals(c2))
            System.out.println("Counter1 equals Counter2.");
        else
            System.out.println("Counter1 does not equal Counter2");

        c1.decrement1();
        if (c1.counterOK(c1))
        {
            System.out.println();
        }
        else
            System.out.println("Error - attempted to subtract 1 Counter from 0 Counter.\n" + "Number of Counter reset to 0.");
        System.out.println(c1.toString());
    }
}

可能的示例输出:
This program creates and uses Counters

Initial state  
counter1 is at 0.  
counter2 is at 0.  
counter1 equals counter2.  

Error - Attempted to subtract 1 Counter from 0 Counter.  
Number of Counter reset to 0.  

State after first test  
counter1 is at 1.  
counter2 is at 0.  
counter1 does not equal counter2.  

State after second test  
counter1 is at 2.  
counter2 is at 2.  
counter1 equals counter2.  

Process completed.

最佳答案

您根本无法通过检查将其递减到零以下。

public void decrement1 () {
    if (count==0) {
        System.out.println("Error- Attempted to subtract 1 Counter from 0 Counter. Number of Counter reset to 0." );
        return;
    }
    count--;
}

通过阅读说明,我认为您不需要显示错误,只需处理错误并重置为零即可。

另外,您错过了要求该构造函数的说明部分:
public Counter(int initialCount) {
    if (initialCount < 0) {
        count = 0;
    } else {
        count = initialCount;
    }
}

关于java - 尝试创建错误检查方法,以使计数器在计数器为0时不递减,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54635988/

相关文章:

java - 打印桌面的屏幕截图并转换为像素矩阵 [0,1]

swift - 将 NSCore 和 NSKeyedArchiver 与 SWIFT 结合使用

java - IntelliJ 中的拼写错误更正

Java 正则表达式花费的时间太长

java - 将对象类型转换为 Java 基元

python - 如何检查 Python 2.5 中的类相等性?

Java Getter 和 Setter 方法

java - 数组与变量方法调用相比

java - JUnit 测试 : invoking parent class protected method

java - 有没有什么方法可以从 Apache Camel 路由生成 bpmn 模式或带有模式的图片?