有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在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);

谢谢你的帮助


共 (2) 个答案

  1. # 1 楼答案

    parseInt失败的原因是,您传递的第二个参数被解释为基数(读取数字的数字基数),这肯定不是您想要实现的

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

    Scanner sc = new Scanner(values);
    List<Integer> list = new ArrayList<Integer>();
    while (sc.hasNextInt()) {
        list.add(sc.nextInteger());
    }
    

    此时,List<Integer>包含从输入字符串转换为Integer类型的数字

  2. # 2 楼答案

    你用错了parseInt。它的签名是

    public static int parseInt(String s, int radix)
    

    将一个升级为int的字符作为第二个参数传递,然后将其编码值用作基数,这是错误的。忘了第二个论点吧(我假设你在10进制下工作)

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

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

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