2016-10-04 12 views
0

文字列をasciiに変換しようとしていて、asciiの値を変更してから、それらの値を文字列に変換し直しています。私は正しい方向に行っていましたが、文字列を返さなければならないというエラーメッセージが表示されています。どこで私は間違えましたか?ASCII値を文字列に戻すにはどうすればよいですか?

public static boolean safeToUse(String text) { 

    text = text.toUpperCase(); 

    int length = text.length(); 

    for (int a=0; a < length; a++) { 

     char c = text.charAt(a); 

     if (c < FIRST || c > LAST) { //checking range 

      return false; 
     } 
    } 
    return true; 

} 

public static String rot31(String message) 
{ 
    message = message.toUpperCase(); 

    int length = message.length(); 
    for (int x=0; x < length; x++) { 

     int ch = message.charAt(x); 

     if (ch <= 62) { 

      int ascii = ch + 31; 
     } else { 

      int ascii = ch - 62; 

      String coded = Integer.toString(ascii); 

      return coded; 
     } 
    } 

} 
+1

ヒント: 'rot31(String)'は空の 'String'を' '' 'として返しますか?また、 'return'が何をしているのか分からないと思うので、最初の' char'の出現を '62'より大きくしたいと思っていません。 – SomeJavaGuy

+0

' rot31'は、文字列に文字がない62より高いASCII値。私はコンパイラがそれについて不平を言っていると思います。 –

答えて

-1

rot31メソッドはStringを返す必要があります。コードに文字列を返さないパスがあります。

適切な値が見つからない場合、またはnullを返すか、例外をスローする場合は、単に空のStringを返すことができます。例を以下に示します。

public static String rot31(String message) 
{ 
    message = message.toUpperCase(); 

    int length = message.length(); 
    for (int x = 0; x < length; x++) 
    { 

     int ch = message.charAt(x); 

     if (ch <= 62) 
     { 
      int ascii = ch + 31; 
     } 
     else 
     { 

      int ascii = ch - 62; 

      String coded = Integer.toString(ascii); 

      return coded; 
     } 
    } 

    // Failed to find the correct value 
    return ""; 

} 
関連する問題