【问题标题】:Unable to convert to Int from String无法从 String 转换为 Int
【发布时间】:2013-03-22 18:39:32
【问题描述】:

我正在研究 TSP 问题的解决方案。我已经生成了String“123456”的所有排列,但是,我需要将其转换为IntegerArrayList,如下所示[1,2,3,4,5,6] ... [ 6,5,4,3,2,1]。然后我将它存储到ArrayListsArrayList 中。到达那里后,我将能够比较所有需要前往的城市。

当我运行我的代码时,我有一个生成排列的方法,然后有一个方法将该排列更改为 ArrayListInteger。当我转换它们时,我得到了异常java.lang.NumberFormatException: For input string: ""。我不知道有任何其他方法可以将String 转换为Integer

这是我的代码。

public static String permute(String begin, String string){
    if(string.length() == 0){
        stringToIntArray(begin+string);
        return begin + string + " ";

    }
    else{
        String result = "";
        for(int i = 0; i < string.length(); ++i){
            String newString = string.substring(0, i)  + string.substring(i+1, string.length());;
            result += permute(begin + string.charAt(i), newString);
        }
        stringToIntArray(result);
        return result;


    }
}

public static void stringToIntArray(String s){
    ArrayList<Integer> perm = new ArrayList<Integer>();
    String [] change = s.split("");
    for(int i = 0; i < 7; ++i){
        int integer = Integer.parseInt(change[i]);
        System.out.println(integer);
    }

}

public static void main(String[] args) {
    permute("", "123456");
} 

【问题讨论】:

  • 你不需要拆分任何东西。只需将字符串的每个 char 转换为 int 并放入数组中即可。

标签: java arraylist string-formatting permutation parseint


【解决方案1】:

这些行

String [] change = s.split("");
for(int i = 0; i < 7; ++i){
    int integer = Integer.parseInt(change[i]);
    System.out.println(integer);
}

给定一个String 像“12345”,当你将它拆分为空时,它将分隔每个字符。给你一个带有["","1","2","3","4","5"] 的数组。由于空的String "" 不是数字,您将得到NumberFormatException。您可以将索引 i 更改为从 1 开始,以忽略第一个空的 String

【讨论】:

  • 哇,从现在开始,将 for 循环更改为从 1 开始,它可以编译,谢谢!
  • Np,如果任何答案对您有所帮助,您可以在时间允许的情况下投票并接受。祝你好运!
【解决方案2】:

split 方法在"" 上拆分时,会产生一个空字符串作为数组的第一个元素,因此需要从 i = 1 开始迭代。

此外,在change.length 处停止迭代会更安全,以确保在超过 6 个字符时处理所有字符,并且在字符数少于 6 时不要超出范围。

String [] change = s.split("");
for(int i = 1; i < change.length; ++i){ // ignore first element
    int integer = Integer.parseInt(change[i]);
    System.out.println(integer);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多