2014-04-30 33 views
-1

我在使用instanceof Double時遇到了一些麻煩,無論我使用Double還是Double,並且如果我在if語句的上面或下面進行解析,我都會收到錯誤。Double Java的實例

任何幫助,將不勝感激。

更新:錯誤根據解析的位置不同而不同,範圍從不能比較字符串到double,這是顯而易見的。但也不能雙

List<String> graphlist = Arrays.asList(formula.split(",")); 

     if(!(graphlist.get(0) instanceof String || graphlist.get(1) instanceof String)){ 
     if(!(graphlist.get(2) instanceof Double|| graphlist.get(3) instanceof Double)){ 
       s.append("Invalid Graph Syntax."); 
      } 
     } 
     lower = Double.parseDouble(graphlist.get(2)); 
     upper = Double.parseDouble(graphlist.get(3)); 
+2

請包括錯誤 –

+1

你爲什麼不把它繞在一個嘗試catch塊,並讓我們例外 – AurA

+0

要了解類型化容器的工作原理?我建議你在提出更多如此微不足道的問題之前,先閱讀一些關於它們的內容:[關於泛型的常見問題](http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html)和[Wiki](http:// en.wikipedia.org/wiki/Generics_in_Java) –

回答

4

比較雙人和雙和無效尺寸您graphList只會包含String,因爲它是一個類型的List。這就是爲什麼它會給你錯誤。

爲什麼你試圖從中得到Double

1

該列表包含字符串,字符串永遠不是Double的實例。你想知道的是,字符串是否可以代表我假設的雙倍數?如果是這樣,你可以使用Double#parseDouble功能:

private boolean isDouble(String arg) { 
    try { 
     Double d = Double.parseDouble(arg); 
     return true; 
    } catch (NumberFormatException | NullPointerException e) { 
     return false; 
    } 
} 

,或者你只是把一切都放在一個try-catch塊:

List<String> graphlist = Arrays.asList(formula.split(",")); 

if(!(graphlist.get(0) instanceof String || graphlist.get(1) instanceof String)){ 
    try { 
     lower = Double.parseDouble(graphlist.get(2)); 
     upper = Double.parseDouble(graphlist.get(3)); 
    } catch (NumberFormatException | NullPointerException e) { 
     s.append("Invalid Graph Syntax."); 
    } 
}