Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/45.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何将包含大量空格的数字字符串转换为一系列Int变量。_Java_String - Fatal编程技术网

在Java中,如何将包含大量空格的数字字符串转换为一系列Int变量。

在Java中,如何将包含大量空格的数字字符串转换为一系列Int变量。,java,string,Java,String,因此,我将从JOptionPane上的输入框中得到三个数字,它们之间用未知数量的空格分隔(空格也可能在数字之间变化,第一个和第二个之间有五个,第二个和第三个之间可能有8个),我需要的是,取下这些数字,并在我的代码的其余部分中将它们作为变量使用。我很难在字符串中将这些数字分配给三个变量。我试图做的是使用trim()去掉所有空格,然后将位置0、1和2的charAt()分别解析到每个变量中。每次我都会收到一个错误,内容如下: 线程“main”java.lang.NumberFormatExceptio

因此,我将从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);

感谢您的帮助!

您使用的
parseInt
错误。其签名为

public static int parseInt(String s, int radix)
您将一个升级为int的字符作为第二个参数传递,然后将其编码值用作基数,这是错误的。忘记第二个参数(我假设您使用的是基数10)

此外,
.trim()
只删除前导和尾随空格。要删除数字之间的空格,应使用

String[] tokens = values.split("\\s+")

它将字符串拆分为由指定的正则表达式(即“一个或多个空白字符”)分隔的标记。

之所以
parseInt
失败,是因为传递的第二个参数被解释为基数(读取数字的数字基),这肯定不是您希望实现的目标

当您有一个字符串,其中有多个数字由可变数量的空白字符分隔时,您可以使用进行读取:

Scanner sc = new Scanner(values);
List<Integer> list = new ArrayList<Integer>();
while (sc.hasNextInt()) {
    list.add(sc.nextInteger());
}
Scanner sc=新扫描仪(值);
列表=新的ArrayList();
while(sc.hasnetint()){
list.add(sc.nextInteger());
}

此时,
List
包含输入字符串中的数字,转换为
Integer
类型。

我可以将它们放在数组中而不是数组列表中吗?只要在每次添加值时增加索引,然后这样做即可。@bobHarding您可以将列表转换为数组。数组的问题在于gh,就是你需要在创建它时知道它的大小。另一方面,列表可以让你在创建时添加元素。有效!不过我一次只能从用户那里收到3个数字,这样我就可以使用数组了。我只扫描了3次,因为正如我所说的,我知道用户只会给我3个输入。@bobHarding我很高兴看到它这对你来说是有效的。如果你不再寻找一个问题的改进答案,请考虑点击旁边的灰色复选标记来接受答案。这会让其他网站访问者知道问题已经解决,并在堆栈溢出上为你赢得新徽章。