java - 无法从 String 转换为 Int

标签 java arraylist string-formatting permutation parseint

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

当我运行代码时,我有一个生成排列的方法,然后有一个将该排列更改为 IntegerArrayList 的方法。当我转换它们时,我收到异常 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");
} 

最佳答案

这些行

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

给定一个像“12345”这样的字符串,当您将其拆分为空时,它将分隔每个字符。为您提供一个包含 ["","1","2","3","4","5"] 的数组。由于空的 String "" 不是数字,因此您将得到 NumberFormatException。您可以将索引 i 更改为从 1 开始,以便忽略第一个空的 String

关于java - 无法从 String 转换为 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15577597/

相关文章:

java - 如何将外部jar文件传递到spring boot项目?

java - 如何从参数向 ListView 添加元素

java - 从抽象类层次结构中获取正确的字段?

java - 显示精度为 3 的 float

java - 自定义 TreeSet 打印 Map.Entry 值的方式

java - 在 JFace 向导页面之间传递数据

java - Word、docx4j 和内容控制文本格式

java - 在 java 中设置 jLabel 文本抛出异常

android - 使用 Comparator 和 Custom ArrayAdapter 对 ArrayList 与对象进行排序

Python 字符串格式 "%4d"%