我正在研究 TSP 问题的解决方案。我已经生成了 String
“123456” 的所有排列,但是,我需要将其转换为 Integer
的 ArrayList
,如下所示 [1 ,2,3,4,5,6]...[6,5,4,3,2,1]。然后,我将其存储到 ArrayLists
的 ArrayList
中。到达那里后,我将能够比较所有需要前往的城市。
当我运行代码时,我有一个生成排列的方法,然后有一个将该排列更改为 Integer
的 ArrayList
的方法。当我转换它们时,我收到异常 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/