2016-09-12 23 views
-4

TopCoderの問題を解決しています。ここでは、String[]を返さなければならないメソッドを記述する必要があります。これは、エラーなしで私の方法、およびその作業です:javaメソッドのString []配列をカンマなしで返す

public static String[] decode(String encoded) 
{ 
    char[] test = encoded.toCharArray(); 
    int[] decode_arr = new int[test.length]; 
    String[] result = new String[2]; 
    boolean flag= false; 
    for(int i=0;i<2;i++) 
    { 
     flag = false; 
     decode_arr[0] = i; 
     decode_arr[1] = Character.getNumericValue(test[0])-decode_arr[0]; 

     for(int x=2;x<test.length;x++) 
     { 
      decode_arr[x] = Character.getNumericValue(test[x-1]) - decode_arr[x-2]-decode_arr[x-1]; 
      if(decode_arr[x]>1 || decode_arr[x]<0) 
       flag=true; 
     } 
     if(!flag) 
      result[i] = Arrays.toString(decode_arr); 
     else 
      result[i] = "NONE"; 

     //System.out.println(Arrays.toString(decode_arr)); 
     decode_arr = null; 
     decode_arr = new int[test.length]; 
    } 

    return result; 

} 

今問題が出力された場合、コンパイラは、例えば、カンマなしで値を期待している:

"01101001101101001101001001001101001", "10110010110110010110010010010110010"

私が得る何をすべきか次のとおりです。

[0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0 , 0, 1, 1, 0, 1, 0, 0, 1] [1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0 , 1, 0, 1, 1, 0, 0, 1, 0]

私は、任意の一般的な微調整をしないのですか私は、出力Aをトリミングすることになっていますそれはそれが仮定されている方法で提出する?親切に助けてください!

+3

私の推測では、Arrays.toString(decode_arr);は正しい選択ではありません。予想される文字の 'char []'を構築し、これを 'String'に変換することをお勧めします。 –

+0

出力は常に0または1になりますか? – SMA

答えて

0

これはArrays.toString()の機能です。 ShowはListと同じように値のグループを明確に示します。以下の場合:それは[11, 2]、または[1, 12]のみ[112]の配列の場合

int[] array = {11, 2}; // printed as "112" afterwards 

..youははっきりと見ることができません。あなたは、出力のようなものを望む場合

しかし、空の文字で、すべての不要な文字を置換しよう:値の一部として[]文字を有する場合には

String out = Arrays.toString(array).replace(", ", "").replace("[", "").replace("]", ""); 

、私はより良い、この安全な方法をあなたにお勧めします。

String arrayAsString = Arrays.toString(array); 
String out = arrayAsString.substring(1,arrayAsString.length()-1).replace(", ",""); 
関連する問題