2016-09-17 5 views
0
String part1=parts[0]; 
String part2=parts[1]; 
String part3=parts[2]; 
System.out.print(part3);  

sasdasd ASD ASD ASD ASD ASD ASD ASD ASD asdasdasd ASD ASD ASD asdasdasdasd ASD DASD asdasdasdasdasdasdとしてASD asdasのDASDとして文字列のエラー

+0

私はそれは難しいあなたが 'のSystem.out.println(3)上のエラーを取得していることを信じることを見つけます。 '... – alfasin

+0

アクセスする前に配列の長さを確認してください – Kelvin

答えて

2

あなたは、配列の長さを確認することができます。

if (parts.length > 1) { 
    ... // what to do if the string contains the delimiter 
} 
else { 
    ... // what to do if the string does not contain the delimiter 
} 
+0

ありがとうございました。それはトリックでした。 – ETC

+0

Jtextfieldを同じフォーマットで検証する方法を教えてください。 2d6,3d8または6d-10として (Numbers d Numbers)/(Numbers d Numbers - Numbers) – ETC

0
if (string.contains("-")) { 
     parts= string.split("d|\\-");  
     String part1=parts[0]; 
     String part2=parts[1]; 
     String part3=parts[2]; 
     }else{ 
      parts= string.split("d");  
      String part1=parts[0]; 
      String part2=parts[1]; 
     } 

      for (int i = 0; i < parts.length; i++) { 
       System.out.println(parts[i]); 
       } 
0

捕捉基を有する正規表現はStringを解析するために使用することができます。グループのStringnullであるかどうかを確認するだけで、個々のグループの存在をテストできます。例:

Pattern pattern = Pattern.compile("(\\d+)d(\\d+)([+-]\\d+)?"); 

for (String s : new String[] { 
    "2d6", 
    "3d8", 
    "4d6-2", 
    "4d6+9", 
    "2d6-10", 
    "2d6-1x9" 
}) { 
    System.out.println(s); 
    Matcher m = pattern.matcher(s); 
    if (m.matches()) { 
     int i1 = Integer.parseInt(m.group(1)); 
     int i2 = Integer.parseInt(m.group(2)); 
     String summand = m.group(3); 
     int i3 = summand == null ? 0 : Integer.parseInt(summand); 
     System.out.println(MessageFormat.format("{0}D{1}+({2})", i1, i2, i3)); 
    } else { 
     System.out.println("no match"); 
    } 
} 

出力:

2d6 
2D6+(0) 
3d8 
3D8+(0) 
4d6-2 
4D6+(-2) 
4d6+9 
4D6+(9) 
2d6-10 
2D6+(-10) 
2d6-1x9 
no match