Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
测试前置条件的JAVA可执行断言_Java_Assertion - Fatal编程技术网

测试前置条件的JAVA可执行断言

测试前置条件的JAVA可执行断言,java,assertion,Java,Assertion,我是Java新手,试图通过在线材料学习一些东西。 例如,我应该编写一个断言来验证操作的前提条件 public String getCategory(float price, float size, float weight) 前提是所有这些都应该是积极的。 我不知道从哪里开始。 如何编写此命令?尝试使用if条件 public String getCategory(float price, float size, float weight){ if(price < 0) {

我是Java新手,试图通过在线材料学习一些东西。 例如,我应该编写一个断言来验证操作的前提条件

public String getCategory(float price, float size, float weight)
前提是所有这些都应该是积极的。 我不知道从哪里开始。 如何编写此命令?

尝试使用if条件

public String getCategory(float price, float size, float weight){
    if(price < 0) {
       // do something or throw exception
    }
}

你可以试试

public String getCategory(float price, float size, float weight) {
    assert price >= 0 && size >= 0 && weight >= 0: "Invalid parameters";
}
如果需要更详细的错误消息,请执行以下操作:

public String getCategory(float price, float size, float weight) {
   assert price >= 0: "price < 0";
   assert size >= 0: "size < 0";
   assert weight >= 0: "weight < 0";
}
不要忘记,当您的程序被其他人使用时,在检查边界时使用异常会更好。我只在编码时使用断言,因为其他人可能不会使用已启用的断言运行您的代码。

希望这有帮助,这是我的第一个答案。

代码需要在启用断言的情况下编译,也需要在启用断言的情况下执行,对吗?这也帮助我理解并学到了一些新的东西。谢谢你的帮助。
public String getCategory(float price, float size, float weight) {
   assert price >= 0: "price < 0";
   assert size >= 0: "size < 0";
   assert weight >= 0: "weight < 0";
}
java -ea MyMainClass