Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 求一串数字的所有编码的递归方法_Java_String_Recursion_Decoding_String Decoding - Fatal编程技术网

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