有 Java 编程相关的问题?

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

将Java字符串数组设置为Int

我有一个大约有150个数字的字符串,比如字符串num=“64513246563……”

我正在尝试将这个字符串的每个数字相加。所以我的想法是把它分成一个整数数组,然后从那里添加它们。我首先将其拆分为字符串数组,然后尝试将其转换为Int数组。我得到一个未知源错误。代码如下:

String[] strArray = num.split("");
int[] intArray = new int[strArray.length];
        for(int i = 0; i < strArray.length; i++) {
           intArray[i] = Integer.parseInt(strArray[i]);
           } 

下面是错误:

Exception in thread "main" java.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)

有人能看出我做错了什么吗?有没有更有效的方法

////////////////////////////////

谢谢大家的帮助,好像是用。split(“”)在索引0处创建一个空字符串。这是我的主要问题,但关于如何更有效地解决这个问题,有很多有用的建议:)谢谢大家的意见


共 (4) 个答案

  1. # 1 楼答案

    java.lang.NumberFormatException: For input string: ""
    

    异常消息清楚地表明输入是空字符串

    一种处理方法是,在解析之前进行空String检查

     for(int i = 0; i < strArray.length(); i++) {
               if(strArray[i] != null && !"".equals(strArray[i])
                  {
                   int q = Integer.parseInt(strArray[i]);
                  }
               } 
    

    注意:如果输入不是有效的int,这仍然会失败,但如果是空字符串(或)null,则不会失败

    另一种处理方法是获取chartAt(i),而不是使用split("")

  2. # 2 楼答案

    for(int i=0; i<yourString.length; i++) {
        yourIntegers[i] = Integer.parseInt(yourString.charAt(i).ToString());
    }
    
  3. # 3 楼答案

    num.split("");给出的第一个字符串为空

    一个解决方案是简单地从索引1开始迭代

    但是你所做的事情太贵了

        String num = "64513246563";
        for(int i = 0; i < num.length(); i++) {
             int digit = num.charAt(i)-'0';
             ... // use the digit, perhaps adding it
        } 
    
  4. # 4 楼答案

    char[] charArray = num.toCharArray();
    
    for(char c : charArray) {
        int q = Integer.parseInt("" + c);
    }