java 如何启用Assert?

fcg9iug3  于 2023-01-07  发布在  Java
关注(0)|答案(3)|浏览(133)

在我的在线Java编程课上,我需要编写一个程序,用户输入自己的年龄,然后检查年龄是否在0到125之间。如果不在0到125之间,它会显示一个错误代码,我需要使用Assert来完成这一操作。

import java.util.Scanner;

public class eproject1 {

   public static void main(String args[]) {

      Scanner input = new Scanner(System.in);

      System.out.print("What is your age? ");

      int num = input.nextInt();

      System.out.println(num);

      assert(num >= 1 && num < 125);

      System.out.printf("You entered %d\n", num); // NEED TO FIX, SOMETHING ISN'T RIGHT

   }

}

问题是它会告诉您输入的年龄,即使它不在1到124的范围内。研究表明我需要实际启用Assert,但我在网上找到的结果非常没有帮助,因为它们涉及到一些Eclipse的东西-我敢肯定这是某种新手的错误,因为我不太擅长编程。
那么......如何让Assert的东西工作呢?

aemubtdh

aemubtdh1#

java -ea <program_name>应该在命令提示符下执行此操作。
您可以分别对intellJeclipse尝试以下操作。

k5ifujac

k5ifujac2#

第一个月第一个月〉第一个月第一个月〉第一个月第二个月〉第一个月第三个月:将-ea输入到VM选项

wfauudbj

wfauudbj3#

在我的在线Java编程课上,我必须编写一个程序,让用户输入他们的年龄,并检查年龄是否在0到125之间--如果不在0到125之间,它将显示一个错误代码,我需要使用Assert来完成这一操作。
这一做法被误导了。
应该使用JavaAssertnever实现错误检查控制流。
不要使用Assert执行应用程序正确操作所需的任何工作。
因为Assert可能被禁用,所以程序不能假设Assert中包含的布尔表达式将被求值。违反这一规则会有可怕的后果。例如,假设你想从一个列表名称中删除所有的null元素,并且知道该列表包含一个或多个null。
一个失败的Assert应该表明你的代码中有一个错误。给程序提供错误的参数并不是错误;这只是一个常规错误。
实现这类事情并不需要Assert,如果你想在这样的用户错误时使应用程序崩溃,可以使用某种异常。

import java.util.Scanner;

public class eproject1 {

   public static void main(String args[]) {

      Scanner input = new Scanner(System.in);

      System.out.print("What is your age? ");

      int num = input.nextInt();
  
      System.out.println(num);

      if (!(num >= 1 && num < 125)) {
          throw new RuntimeException("Argument out of range");
      }

      System.out.printf("You entered %d\n", num);
   }

}

相关问题