【问题标题】:converting string array into int array将字符串数组转换为int数组
【发布时间】:2013-03-07 21:15:18
【问题描述】:

这是我目前所拥有的,我需要将这个字符串数组转换为一个整数数组,字符串数组看起来像这样

wholef[0] = "2 3 4";
wholef[1] = "1 3 4";
wholef[2] = "5 3 5";
wholef[3] = "4 5 6";
wholef[4] = "3 10 2";

这些值来自我读取的文本文件,但现在我需要将其转换为一个大整数数组,我尝试使用拆分方法,但我不确定它是否适用于这种设置。如果有人能给我一个更好的方法,那就太好了,但我只需要把它转换成一个整数数组,这就是我所需要的。

for(int k = 0; k < fline; k++)
    {
        String[] items = wholef[k].replaceAll(" ", "").split(",");

        int[] parsed = new int[wholef[k].length];

        for (int i = 0; i < wholef[k].length; i++)
        {
            try 
            {
                parsed[i] = Integer.parseInt(wholef[i]);
            } catch (NumberFormatException nfe) {};
        }
    }

这是我现在使用的新代码,它非常接近,因为我只得到一个错误

int q = 0;
        for (String crtLine : wholef) 
        {
            int[] parsed = new int[wholef.length];

            String[] items = crtLine.split(" ");
            for (String crtItem: items) 
            {
                parsed[q++] = Integer.parse(crtItem);
            }
        }

错误是这样的 java:97: 错误: 找不到符号已解析 [q++} = Integer.parse(crtItem); ^ 符号:方法解析(字符串) 位置:整数类 1 个错误

【问题讨论】:

  • 你在用括号做什么?我在您的Strings 中没有看到任何内容?
  • 老实说,我不知道为什么它在那里,但它已被修复
  • parsed[q++] = Integer.parse(crtItem) 应该是parsed[q++] = Integer.parseInt(crtItem)
  • 也许这是该问题的模拟代码,但在不以某种方式做出反应(再次抛出它?)或至少包含确认您打算悄悄地进行的评论的情况下执行 catch (NumberFormatException nfe) {}; 是有风险的删除非整数字符串。

标签: java arrays int


【解决方案1】:

试试这个:

int i = 0;
for (String crtLine : wholef) {
     String[] items = crtLine.split(" ");
     for (String crtItem: items) {
          parsed[i++] = Integer.parseInt(crtItem);
     }
}

【讨论】:

  • 确保每次对 wholef 迭代都重置 i 并且解析后的大小设置为正确。
  • 这会破坏它 - 将相同的 3 个元素写入数组。由于大小未知,我建议使用 List 然后调用 toArray()。
  • 如果知道每个.split()会产生正好3个字符串,parsed数组可以像这样安全地初始化:int[] parsed = new int[3*wholef.length],如果不是,@bmorris591是对的,那就是最好有一个List
  • 这很好,我将其缩小到 1 个错误,但我不确定如何修复它。我将在我的所有帖子下方添加详细信息
  • Integer.parse 不是一种方法。
【解决方案2】:

这会将您的字符串数组转储到 intholef[n..total]; 如果你想把它变成二维数组或对象数组,你必须做一些额外的事情。然后你可以做一个对象数组,并将每组值作为一个属性。

 String[] parts = wholef[0].split(" ");
 int[] intwholef= new int[parts.length];

 for(int n = 0; n < parts.length; n++) {
    intwholef[n] = Integer.parseInt(parts[n]);
  }

【讨论】:

  • 让它工作得很好,我唯一的问题是,当我在新数组中有变量时,我无法在 for 循环之外使用它们,有什么方法可以解决这个问题?
猜你喜欢
  • 2012-03-26
  • 2021-12-21
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 2013-05-31
  • 2016-08-13
  • 1970-01-01
相关资源
最近更新 更多