【问题标题】:How do I convert ascii values back into String? [duplicate]如何将 ascii 值转换回字符串? [复制]
【发布时间】:2017-02-12 18:35:41
【问题描述】:

我正在尝试将 String 转换为 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;
        }
    }

}

【问题讨论】:

  • 提示:rot31(String)"" 的形式返回一个空的 String 是什么?另外我认为你误解了return 所做的事情,因为我认为你不想在第一个char 出现大于62 时返回
  • 如果字符串中没有字符的 ASCII 值高于 62,rot31 可能永远不会返回。我认为编译器正在抱怨这一点。

标签: java string eclipse ascii


【解决方案1】:

您的rot31 方法必须返回一个字符串。您的代码有一个不会返回字符串的路径。

如果未找到正确的值,您可以简单地返回一个空字符串,或者您可以选择返回 null 或抛出异常。示例如下:

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 "";

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多