0

假设我有一个字符串数组,如下所示:

   String[] str = {"2","4","5"};

现在我想从它的每个元素中减去 1,即我希望字符串现在是这样的:

    str = {"1","3","4"};

我该怎么做?除了将其转换为整数数组之外,还有其他方法吗?

4

8 回答 8

2

您必须将它们转换为整数,但不一定要存储到整数数组中。您可以改为就地进行数学运算:

for(int i = 0; i < str.length; i++) {
  str[i] = Integer.toString(Integer.parseInt(str[i]) - 1);
}

但是,这对我来说是一种代码味道。一般来说,在进行数学运算时,字符串往往不是最佳选择。您可能还想在int[]内部使用并在需要时将它们转换为字符串。

于 2013-05-17T11:51:53.297 回答
2

尝试这个,

String str[]= {"2","4","5"};
for(int i=0;i<str.length;i++)
{
str[i]=String.valueOf(Integer.parseInt(str[i])-1));
}
于 2013-05-17T11:53:39.337 回答
1

您需要将它们转换为整数。

如果你可以做一些疯狂的限制,你可以让它更好一点,例如......在字符数组中只有一位整数,严格大于零。然后你可以通过从它们的 ASCII 值中减去 1 来做“数学”,但这甚至是一个非常疯狂的情况。

于 2013-05-17T11:51:00.400 回答
0

希望这会帮助你。

public String[] stringCal(String[] ele,int numbr){
    String[] sCalulated = new String[ele.length];
    for(int i = 0; i < ele.length ; i ++){
        sCalulated[i] = String.valueOf(Integer.parseInt(ele[i])-numbr);
    }
    return sCalulated;
}
于 2013-05-17T11:57:38.643 回答
0
 public static void main(String[] args) throws IOException {

    String str[] = subtractOn(new String[]{"2","4","5"});

    for(int k=0;k<str.length;k++){
        System.out.println("Integer is :" +str[k]);
    }

  }

public static String[] subtractOn(String str[]){

    int intArray[] = new int[str.length];
    String stres[] = new String[str.length];

    for(int i=0;i<str.length;i++){
        intArray[i] = Integer.parseInt(str[i]);
    }

    for(int j=0;j<intArray.length;j++){
        stres[j] = String.valueOf(intArray[j]-1);
    }

    return stres;
}
于 2013-05-29T09:52:29.877 回答
0
for (int i = 0; i < str.length; i++)
    str[i] := String.valueOf(Integer.parseInt(str[i]) - 1);
}
于 2013-05-17T11:54:46.947 回答
0
  1. 将字符串转换为 int :int foo = Integer.parseInt("1234");
  2. 从中减去 1
  3. 转换回字符串 Integer.toString(i)

这使得

for (int i = 0; i < strn.length; i++)
    strn[i] := String.valueOf(Integer.parseInt(strn[i]) - 1);
}
于 2013-05-17T11:51:54.157 回答
0

您可以使用org.apache.commons.lang3.math库以优雅的方式解决它。

for(int i = 0; i < str.length; i++) {
  str[i] = NumberUtils.toInt(str[i]) - 1;
}
于 2020-06-15T04:31:21.403 回答