Java 求一串数字的所有编码的递归方法
我试图找到一系列数字的所有可能解码,例如Java 求一串数字的所有编码的递归方法,java,string,recursion,decoding,string-decoding,Java,String,Recursion,Decoding,String Decoding,我试图找到一系列数字的所有可能解码,例如 Input: {1, 2, 1} Output: ("aba", "au", "la") [3 interpretations: aba(1,2,1), au(1,21), la(12,1)] 我的程序品脱“aba”,然后给我以下错误 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 3 at java.la
Input: {1, 2, 1}
Output: ("aba", "au", "la")
[3 interpretations: aba(1,2,1), au(1,21), la(12,1)]
我的程序品脱“aba”,然后给我以下错误
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 3
at java.lang.String.charAt(String.java:686)
at countDecoding.decodings(countDecoding.java:20)
at countDecoding.decodings(countDecoding.java:17)
at countDecoding.decodings(countDecoding.java:17)
at countDecoding.main(countDecoding.java:37)
line 20 is if((str.charAt(n)<'2' && str.charAt(n+1)!='0') || (str.charAt(n)=='2' && str.charAt(n+1)<'6')){
and line 17 is decodings(str,n=n+1,temp,len);
线程“main”java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:3
位于java.lang.String.charAt(String.java:686)
解码(countDecoding.java:20)
解码(countDecoding.java:17)
解码(countDecoding.java:17)
在countDecoding.main(countDecoding.java:37)
第20行是if((str.charAt(n)问题是字符串从0…n-1开始。假设长度是3,但是str.charAt(n)n应该从0…2开始。您使用3来调用它。修复它。 所指的行是:
if(str.charAt(n)<'2' && str.charAt(n+1)!='0') || (str.charAt(n)=='2' && str.charAt(n+1)<'6'))
输出为:
aba
temp is aba
temp is ab
temp is a
请告诉我们哪一行是第20行。我建议在导致问题的
charAt
行之前使用类似于System.out.println(n)
的内容。这可能会帮助您查看逻辑中可能存在的错误。或者使用调试器。谢谢,但我需要这些内容来检查(n)和(n+1)如果你提供一些销售输入和样本输出,我可以帮助你实现!并解释你想做什么!而且我不明白你所说的private void decodings(String str, int n,String temp,int len){
if(n == len ){
System.out.println(temp);
return;
}
if(str.charAt(n)>='0'){
char[] c = Character.toChars(96 + str.charAt(n)-'0');
temp = temp +c[0];
decodings(str,n+1,temp,len);
}
System.out.println("temp is "+temp);
}
public static void main(String[]args){
String str="121";
new countDecoding().decodings(str, 0,"",3);
}
aba
temp is aba
temp is ab
temp is a