java - 使用定界符将字符串数组转换为 int

标签 java regex

我不明白为什么会出现空指针异常。我正在尝试转换用户在提示后输入的行号,我想用空格“”逗号“,”或逗号和空格“,”来分隔它。

这是我的代码,我在 nums[i]=Integer.parseInt(holder[i]); 上遇到空指针异常;线。我就是想不通为什么。

String again="n";
    int[] nums = null;

    do {
        Scanner scan = new Scanner (System.in);

        System.out.println("Enter a sequence of integers separated by a combination of commas or spaces: ");
        String in=scan.nextLine();
        String[] holder=in.split(",| |, ");

            for (int i=0; i<holder.length; i++) {

                nums[i]=Integer.parseInt(holder[i]);
                System.out.print(nums[i]);
            }


    }
    while (again=="y");

好的,谢谢大家,我按照接受的答案中的建议,通过将 nums 数组的长度初始化为 holder 数组的长度来使其工作。像这样:

int[] nums = new int[holder.length];

不过,我还有第二个问题,因为我的正则表达式似乎失败了,如果用“,”或“”而不是“,”来描述,我可以读取它有什么想法吗?

这是我的错误:

Enter a sequence of integers separated by a combination of commas or spaces: 
    1, 2, 3
    Exception in thread "main" 1java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at SortComparison.main(SortComparison.java:20)

最佳答案

您的空指针异常是由于您已将 nums 数组初始化为空,然后尝试在 for 循环中“指向”它。你可以去掉 int[] nums = null 并添加:

int[] nums = new int[holder.length];

就在 for 循环之前(显然是在创建 holder 数组之后)。

关于java - 使用定界符将字符串数组转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15861257/

相关文章:

javascript - JavaScript 的 MAC 地址正则表达式

javascript - 有没有办法只将顶级括号与正则表达式匹配?

jquery - 使用 jQuery 和 REGEX 获取特定的页面 URL 片段

java - GWT 的托管模式不起作用

java - Spring Boot 编辑通知

java - 协议(protocol)处理程序启动失败的 Spring Boot SSL 应用程序

sql-server - Visual Studio 中的正则表达式查找和替换 - 搜索词之间有多个空格

regex - 为什么行的开头是 "^"行的结尾是 "$"?

java - 使用 dd.MM.yyyy 格式的日期时间可以解析只有两位数年份的字符串吗?

java - 使用Spring boot和多个数据源,如何在配置类之外指定@primary?