2016-09-10 1 views
-2

isValidElement funktioniert gut, aber ich habe ein Problem mit setParts: Wenn die IP-Adresse aus dem übergebenen String gültig ist, legt die Instanz variable Teile, um es als 4 ganzzahlige Werte zu speichern.Probleme beim Ändern von Zeichenfolgen innerhalb des Arrays

Zum Beispiel, wenn ip = "192.000168.0.0000001", sollten Teile {192,168,0,1} werden. Wenn die IP-Adresse übergeben ungültig ist, sollten Teile werden {0,0,0,0}

public static boolean isValidElement(String token) { 
    try{ 
     int foo = Integer.parseInt("token"); 
     if(foo >= 0 && foo <= 255) 
      return true; 
     else 
      return false; 
    } catch (NumberFormatException ex){ 
     return false; 
    } 
} 

public void setParts(String ip) { 
    int i; 
    if (isValidElement(ip) == false){ 
     parts = new int[]{0,0,0,0}; 
    } else 
     if (isValidElement(ip) == true){ 
      for(i=0; i<parts.length; i++){ 
       parts[i] = ip; 
      } 
     } 

isValidElement ist meine Methode, um die Zeichenfolge übergeben Überprüfung gültig ist oder nicht, das funktioniert gut und Teile [4] ist mein Array .

Jede Hilfe wird geschätzt, danke.

+0

was erwarten Sie, dass 'Integer.parseInt ("Token");' tut? – njzk2

+0

Was erwarten Sie, dass 'parts [i] = ip;' tut? – njzk2

+0

nicht so weit initialisiert, was erwarten Sie, dass 'parts.length' zurückgibt? – njzk2

Antwort

0

Try Splitting Ihre ip Zeichenfolge auf dem . Charakter, und dann zu einem int jedes String in diesem Array zu konvertieren versuchen. Wenn eine der Konvertierungen fail, setzen Sie das gesamte parts Array:

try { 
    String[] ipArr = ip.split(Pattern.quote(".")); 
    for (int i = 0; i < ipArr.length; i++) { 
     parts[i] = Integer.parseInt(ipArr[i]); 
    } 
} catch (NumberFormatException e) { 
    parts = new int[4]; 
} 
Verwandte Themen