我制作了一个简单的程序让用户从银行帐户中提取一定数量的金额,如果他们撤回太多会导致AssertionError,我怎么能让它写出错误?
import java.util.Scanner;
public class Withdraw {
public static void main(String[]args){
Scanner a = new Scanner(System.in);
int t = 10000;
System.out.println("Withdraw or Deposit");
String in = a.next();
System.out.println("Enter your value");
int wd = a.nextInt();
if(in.equals("withdraw")){
int b;
b = t - wd;
System.out.println(t);
if (b < 0){
throw new AssertionError();
}
}
}
}
答案 0 :(得分:1)
我假设您希望AssertionError
在余额中包含一些信息。您正在使用构造函数AssertionError()
。根据{{3}},您还可以使用构造函数AssertionError(Object detailMessage)
,其中对象将转换为字符串。所以你可以这样做:
throw new AssertionError("Oh no, your balance " + b + " is negative!");
PS - 您的两个if
语句具有不同的间距,例如if(
与if (
。这是“代码嗅觉”的一个例子 - 不是一个真正的错误,而是表示粗心大意的糟糕风格。尽量保持这些小事情的一致性,你的代码看起来更清晰,更具可读性
答案 1 :(得分:0)
将包含throw的if块替换为:
java -ea ClassName
String消息可以是您想要的任何内容。但这仅在您以
运行程序时才有用assert
如果要在普通的Java运行时环境中抛出错误,请不要使用AssertionError。它适用于Exception(String message)
语句。抛出自定义异常,或使用一些异常类 static final String CREATE_TB= "CREATE TABLE "
+ TB_NAME + "(" + ROW_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ TITLE + " TEXT, " + EMAIL + " TEXT, "
+ PASSWORD + " TEXT, " + "user_id" + " INT, "
+ "FOREIGN KEY(" + "user_id" + ") REFERENCES "
+ TB_NAME_USER + "("+ROW_ID_USER+"));";
static final String CREATE_TB_USER = "CREATE TABLE "
+ TB_NAME_USER + "(" + ROW_ID_USER + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ USER_EMAIL + " TEXT, " + USER_PASSWORD + " TEXT "
+ ")";
构造函数。