日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

当字符串为空但不为空时

發布時間:2023/12/3 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 当字符串为空但不为空时 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

我團隊中的一名初級程序員遇到了一個有趣的錯誤。 我已經不止一次看到它的癥狀。 這篇文章是尋找什么以及將來如何防止它。 我還將探討該問題的不同解決方案。

病征

有問題的代碼看起來做得不錯。:

if(trouble != null && !trouble.isEmpty()) { System.out.println(“fine here: ” + trouble); } else { System.out.println(“not so fine here: ” + trouble); }

該代碼將命中“ fine here”塊,但將輸出“ null”值。 通過讀取文件來設置變量。

調查中

我和開發人員查看了打印件并進行了幾次測試,但結果卻相同。 我看了在哪里設置變量。 如果那里什么也沒有,它應該將值設置為null,但是打印輸出表明該值為null。 我有一個主意,我們決定進行測試。 他更改了代碼:

if(trouble != null && !trouble.isEmpty() && !trouble.equals(“null”)) { System.out.println(“fine here”); } else { System.out.println(“not so fine here”); }

每次測試都進行到“這里不太好”。 似乎該值被設置為字符串“ null”而不是值null。

學什么

說實話,我以前已經看過了。 我花了大約一天的時間開始執行相同的代碼來弄清楚它。 我從中了解到,參數檢查仍然是一件好事。 我發現有效的字符串檢查可以在代碼中的多個地方使用。 為了防止復制和粘貼反模式,我將驗證抽象為一個方法。

private static boolean isValidString(String test) { boolean isValid = (test != null && !test.isEmpty() && !test.equals(“null”)); return isValid; }

防止越來越長的驗證行的下一步是將其抽象到驗證對象。 這允許一個骯臟的單詞列表。

public class StringValidator { private List<String> dirtyWords;public static final int ARRAY_SIZE = 20; public StringValidator() { dirtyWords = new ArrayList(ARRAY_SIZE); }public boolean isValid(String test) { boolean isValid = false; isValid = (test != null) && !test.isEmpty(); if(isValid) { for(String word: dirtyWords) { if(word.equals(test)) { isValid = false; break; } } } return isValid; }public void addDirtyWord(String word) { if(!isValidString(word)){ throw new IllegalArgumentException(word + ” is not a good dirty word”); }dirtyWords.add(word); }private boolean isValidString(String test) { return ((test != null) && !test.isEmpty()); } }which leads to this parameter checking code:if(validator.isValid(trouble)) { System.out.println(“fine here”); } else { System.out.println(“not so fine here”); }

結論

有時我們需要跳出框框思考一下問題。 讓您對問題有第二眼的感覺并不難; 這也許是發生的最好的事情。 我探索了最終創建驗證器的解決方案,該驗證器無需經過冗長而令人困惑的測試即可包含臟詞列表。

翻譯自: https://www.javacodegeeks.com/2014/10/when-a-string-is-null-but-not-null.html

總結

以上是生活随笔為你收集整理的当字符串为空但不为空时的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。