【问题标题】:Java Integer.ParseInt bugJava Integer.ParseInt 错误
【发布时间】:2013-02-26 15:49:22
【问题描述】:

初始字符串 = 61440 <CARRE> 150 381 188 419 </CARRE>

我已将此字符串拆分为一个数组,现在包含坐标

String[] coord = t.group(2).split(" ");

结果输出是:

les coord est :150 381 188 419
i = 0 et sa valeur est :150
i = 1 et sa valeur est :381
i = 2 et sa valeur est :188
i = 3 et sa valeur est :419

为此我做了一个 for 循环:

formeCoord = new int[coord.length];
formeCoord[i] = Integer.parseInt(coord[i]);

现在我希望输出带有一个包含所有坐标的 int 数组。但相反的输出是:

Voici la valeur de i =0 et sa valeur int: 0
Voici la valeur de i =1 et sa valeur int: 0
Voici la valeur de i =2 et sa valeur int: 0
Voici la valeur de i =3 et sa valeur int: 419

这里是for循环:

for (int i = 0; i<formeCoord.length; i++){
    System.out.println("Voici la valeur de i ="
        + i
        + "et sa valeur int: "
        + formeCoord[i]);
}

有谁知道我做错了什么?

【问题讨论】:

  • 您确定您的数组(即formeCoord)填充正确吗?
  • 发布 for 循环..
  • 好吧,当我 system.printout 数组“coord”时,它显示正确。
  • 我的意思是你设置formecoord的循环。杜克林的回答很可能是正确的,但您还没有发布相关的代码。
  • 不是那个 for 循环,另一个。包含这些行的那个:formeCoord = new int[coord.length]; formeCoord[i] = Integer.parseInt(coord[i]);

标签: java arrays string int parseint


【解决方案1】:

您似乎在每次迭代都创建一个新数组,而不是添加到它。

大概你的代码是这样的:

for (int i = 0; i < coord.length; i++)
{
  formeCoord = new int[coord.length];
  formeCoord[i] = Integer.parseInt(coord[i]);
}

您需要将其更改为:

formeCoord = new int[coord.length];
for (int i = 0; i < coord.length; i++)
  formeCoord[i] = Integer.parseInt(coord[i]);

【讨论】:

  • 您可以设置您的 IDE 以将每个可能是最终的变量/对象放入最终的。这将有助于找到这个错误
【解决方案2】:

如果您正在循环以下代码...

formeCoord = new int[coord.length];
formeCoord[i] = Integer.parseInt(coord[i]);

除了上次运行之外,您每次都在重置formeCoord

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多