要求是當用戶給定的 activeState 值不是 true 或 false 時得到錯誤。如果用戶給出真或假,代碼應該給出“通過”作為輸出,并且除真或假之外的任何其他輸入應該給出“失敗”作為輸出。
這是我的代碼-
...
public static boolean isActive(Boolean activeState){
boolean flag=false;
if(activeState !=null && (activeState.equals(true)||activeState.equals(false)))
{
flag=true;
}
return flag;
}
...
activeState Output
true passed
false passed
null no output
true# no output
trrrrue no output
@false no output
Lucas no output
根據我的觀察,代碼僅在用戶提供有效輸入時才提供所需的輸出,即。對或錯。但是當給出任何其他輸入值時,即。空,真,假#;沒有任何輸出。它既沒有給出任何錯誤,也沒有給出任何輸出,只是空白。沒有回應生成。
我已經檢查了通過更改輸入欄位的資料型別來解決問題的解決方案,但我無法將 activeState 的資料型別從 Boolean 更改為 String。有什么方法可以驗證 activeState 以便它可以驗證所有輸入值并根據需要生成輸出而不更改資料型別?
uj5u.com熱心網友回復:
簡單的空安全布爾檢查方法。b如果不為空,這將回傳布林值。如果b為 null,則回傳 false。
boolean nullSafeBoolCheck(Boolean b) {
return Optional.ofNullable(b).orElse(false);
}
uj5u.com熱心網友回復:
如果您將引數保留為布林值,則不能傳遞除 true、false 或 null 以外的任何內容。只有選擇使用字串才能解決您的問題
uj5u.com熱心網友回復:
原語boolean有兩種可能的狀態:
truefalse
這些不是文本值,不是String。這些值代表“真”和“假”的概念。
(Boolean注意大寫的“B”)類包裝了一個原始型別的值boolean。這種型別的物件參考可能不指向任何物件。因此 aBoolean可以評估為三個可能值中的任何一個:
truefalsenull
因此,鑒于您在第一段中所述的要求,您的整個方法可能包含以下三元組:
public static String isActiveStateValid ( Boolean b ){
return Objects.isNull( b ) ? "Failed" : "Passed" ;
}
uj5u.com熱心網友回復:
所以,Booleanvalue 只能有三個值:null, true, false。因此,如果沒有雙精度,您可以使用以下代碼重寫您的代碼:
public static boolean isActive(Boolean activeState){
return activeState != null;
}
要檢查用戶輸出,Spring您應該處理例外。例如,如果你在控制器層,你可以定義一個用@ErrorHandler(exception=Exception.clsss)smth 注釋的方法。
如果您提供相關代碼以使我清楚用戶如何證明不正確的值(這是 REST 呼叫),我會給您更準確的答案?
uj5u.com熱心網友回復:
public static String validateIsActive(final String userInput) {
return new Boolean(userInput) ? "passed" : "failed";
}
因為使用的Boolean建構式只回傳 Boolean.TRUE,如果引數不為 null 并且等于(忽略大小寫)“true”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/525402.html
標籤:爪哇弹簧靴
上一篇:如何將介面與泛型一起使用?
