以下は、私に提供される可能性のある入力の例です。
1,4
34,2
-99,20
等
したがって、負の値が含まれ、1、2、3 などの数字が可能です。コンマは単なる区切り文字ではなく、単なる例です。しかし、非整数値は parseInt が機能しない理由です。上記の 3 つの入力を解析してこれを取得できるようにするには、どのようなコードを作成すればよいでしょうか?
1
34
-99
正規表現(regex)を使用できます。
カンマで区切る簡単な例:
String[] values = string.split(",")
for (String a : values) {
Integer.parseInt(a);
}
このコードを使用します:
String str = "1,4 34,2 -99,20";
String[] arr = str.split("\\D+(?<![+-])");
for (int i=0; i<arr.length; i+=2)
System.out.println(Integer.parseInt(arr[i]));
出力:
1
34
-99
区切り文字がある場合にのみ入力を有効にする場合は、"([\\-0-9]*)[,]+.*"
代わりにを使用します。
区切り文字を追加する場合は、たとえば:
、区切り文字セットに追加します。"([\\-0-9]*)[,|:]+.*"
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String args[]) {
try {
String s1 = "-99,20";
System.out.println(getNumber(s1));
s1 = "1,4";
System.out.println(getNumber(s1));
} catch (Exception e) {
e.printStackTrace();
}
}
public static int getNumber(String s1) throws Exception {
Pattern pattern = Pattern.compile("([\\-0-9]*)[,]*.*");
Matcher m = pattern.matcher(s1);
if(m.find()) {
return Integer.parseInt(m.group(1));
}
throw new Exception("Not valid input");
}
}
これは非常にオープンな質問です...最初に文字列を調べて、ドットをすべてのコンマに置き換えてすべての数値を正しくフォーマットすることをお勧めします...次に、それを分割してから、各値を解析する必要があります。
ステップごとに、グーグルで多くのヘルプを見つけることができます。
すなわち。
数字を除くすべての文字を空の文字列に置き換えてから、parseIntを実行できます。
String intStr = inputStr.replaceAll("[^0-9]+","");
int i = Integer.parseInt(intStr);
カンマのみを使用する場合は、
String numbers = "1,34,-99";
String[] splitNums = numbers.split(",");
int[] ints = null;
for(int i = 0; i < splitNums.length(); i++)
{
ints[i] = Integer.valueOf(splitNums[i]);
}