在Java中,如何将包含大量空格的数字字符串转换为一系列Int变量。
因此,我将从JOptionPane上的输入框中得到三个数字,它们之间用未知数量的空格分隔(空格也可能在数字之间变化,第一个和第二个之间有五个,第二个和第三个之间可能有8个),我需要的是,取下这些数字,并在我的代码的其余部分中将它们作为变量使用。我很难在字符串中将这些数字分配给三个变量。我试图做的是使用trim()去掉所有空格,然后将位置0、1和2的charAt()分别解析到每个变量中。每次我都会收到一个错误,内容如下: 线程“main”java.lang.NumberFormatException中的“异常”:基数56大于java.lan.Integer.parseInt处的Character.MAX_基数(未知源)
注: 我在第一次解析时就停止了,因为它不起作用,我会继续解析另外两个,但当第一次解析不起作用时,就没有意义了
我用于此位的代码是:
String values = "0";
int numLinks = 0;
int start = 0;
int numPass = 0;
values = JOptionPaine.showInputDialog(null, "Enter Values: ", JOptionPane.QUESTION_MESSAGE);
values.trim();
numLinks = Integer.parseInt(values, values.char.At(0));
System.out.print(numLinks);
谢谢你的帮助
# 1 楼答案
parseInt
失败的原因是,您传递的第二个参数被解释为基数(读取数字的数字基数),这肯定不是您想要实现的当您有一个字符串,其中有多个数字由可变数量的空白字符分隔时,可以使用^{} 进行读取:
此时,
List<Integer>
包含从输入字符串转换为Integer
类型的数字# 2 楼答案
你用错了
parseInt
。它的签名是将一个升级为int的字符作为第二个参数传递,然后将其编码值用作基数,这是错误的。忘了第二个论点吧(我假设你在10进制下工作)
此外
.trim()
只删除前导和尾随空格。要删除数字之间的空白,应使用它将字符串拆分为由指定的正则表达式(即“一个或多个空白字符”)分隔的标记