这是我的方法,但是我输入了一个NumberFormatException" - "当我尝试以负数运行它时。
public newObj(String s)
{
list = new LinkedList<Integer>();
String[] splitted = s.split("\\d");
int[] ints = new int[splitted.length];
for (int i = 0; i < splitted.length - 1; i++) {
ints[i] = Integer.parseInt(splitted[i]);
}
for (int j = 0; j < ints.length - 1; j++) {
list.add(ints[j]);
}
}
我的输入字符串只是&#34; -123456&#34;或&#34; 12345&#34;。正数有效,但我无法得到否定数据。
对于我的负输入字符串,我希望我的列表类似于[-1,-2,-3,-4,-5,-6]。
答案 0 :(得分:4)
如果你有-123
例如:
String str = "-123";
System.out.println(Arrays.toString(str.split("\\d")));
<强>输出强>
[-]
且-
无法解析为int
来自评论:
对于像-123456
op这样的输入,要将其设为正数
你可以通过
来完成Math.abs(Integer.parseInt(inputString))
让它解析负数,然后你可以使用Math.abs()
进一步发表评论
操作想要分割每个数字并应用符号,您可以执行类似
的操作 String str = "-123";
int numbers[] = null;
int characterIndex = 0;
boolean isNegative = false;
if (str.trim().startsWith("-")) {
characterIndex = 1;
isNegative = true;
numbers = new int[str.length() - 1];
} else {
numbers = new int[str.length()];
}
for (int numIndex = 0; characterIndex < str.length(); characterIndex++, numIndex++) {
numbers[numIndex] = Integer.parseInt(str.substring(characterIndex, characterIndex + 1));
if (isNegative) {
numbers[numIndex] = -1 * numbers[numIndex];
}
}
System.out.println(Arrays.toString(numbers));
注意:错误处理留在您身上