[英]Java - If statement not working (comparing strings)
當我從打開的套接字中獲取IP地址時,有人向我發送了一個流,我注意到IP有一個正斜杠。
我只想簡單地省略它。 但首先我要驗證字符串中的第一個字符是正斜杠:
String dataSource = data.getAddress().toString();
if(dataSource.substring(0,1) == "/"){
System.out.println("trailing forward slash, delete it ");
dataSource = dataSource.substring(1);
}
未檢測到此IF語句。
有誰看到我做錯了什么?
對於字符串比較,使用equals
方法,因為它比使用==
運算符更可靠(它比較內容而==
comnpares引用):
嘗試使用equals
方法:
if(dataSource.substring(0,1).equals("/")){
請使用.equals
if("/".equals(dataSource.substring(0,1))){
System.out.println("trailing forward slash, delete it ");
dataSource = dataSource.substring(1);
}
而不是==
如果你只想測試第一個字符,你可以試試這個方法,
dataSource.charAt(0)== '/'
你應該使用.equals
進行字符串比較
if(dataSource.substring(0,1) == "/")
應該
if ("/".equals(dataSource.substring(0,1)))
您正在將字符串與==
進行比較,這意味着您正在檢查這兩個字符串是否完全相同的字符串引用。
使用equal()
檢查並查看兩個字符串是否包含相同的字符。
請參閱: http : //www.leepoint.net/notes-java/data/expressions/22compareobjects.html
使用.equals(Object)
或.equalsIgnoreCase(String)
來比較字符串。
你需要做dataSource.substring(0,1).equals("/")
,它實際上檢查字符串的內容。 ==
僅檢查雙方是否是同一個對象。
試試這個
if((“一些要檢查的字符串”)。equals(myString)){doSomething(); }
比較值時始終使用equals
。 說過你可以只使用indexOf
方法
if (dataSource.indexOf('/') == 0) {
dataSource = dataSource.substring(1);
}
String dataSource = "/hell";
if(dataSource.substring(0,1).equalsIgnoreCase("/")){
System.out.println("trailing forward slash, delete it ");
dataSource = dataSource.substring(1);
}
運行這個程序。 這工作..
為什么要使用String? 你只是為自己創造這個問題。 使用提供的數據類型:
InetAddress dataSource = data.getInetAddress();
要么
SocketAddress dataSource = data.getRemoteSocketAddress();
然后在兩種情況下都有一個語義感知的.equals()
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.