Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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-帮助将字母转换为整数,添加5,然后再转换回字母_Java_Integer_Letters And Numbers - Fatal编程技术网

Java-帮助将字母转换为整数,添加5,然后再转换回字母

Java-帮助将字母转换为整数,添加5,然后再转换回字母,java,integer,letters-and-numbers,Java,Integer,Letters And Numbers,首先,这是到目前为止我的代码 public int encrypt() { /* This method will apply a simple encrypted algorithm to the text. * Replace each character with the character that is five steps away from * it in the alphabet. For instance, 'A' becomes 'F', 'Y' becomes

首先,这是到目前为止我的代码

    public int encrypt() {
/* This method will apply a simple encrypted algorithm to the text.
 * Replace each character with the character that is five steps away from
 * it in the alphabet. For instance, 'A' becomes 'F', 'Y' becomes '~' and
 * so on. Builds a string with these new encrypted values and returns it.
 */

    text = toLower;
    encrypt = "";
    int eNum = 0;

    for (int i = 0; i <text.length(); i++) {
        c = text.charAt(i);
        if ((Character.isLetter(c))) {

       eNum = (int) - (int)'a' + 5;

        }  
    }


    return eNum;    
}
public int encrypt(){
/*此方法将对文本应用一个简单的加密算法。
*将每个字符替换为距离目标五步的字符
*它在字母表中。例如,“A”变成“F”,“Y”变成“~”和
*依此类推。使用这些新的加密值构建一个字符串并返回它。
*/
text=toLower;
加密=”;
int eNum=0;
for(inti=0;i
//只是一个用于测试的快速转换
字符串yourInput=“AbC.toLowerCase();
字符串convertedString=“”;
对于(int i=0;i少数问题-

  • 首先-
    eNum=(int)-(int)'a'+5;
    你不需要第一个
    (int)
    我相信,你可以只做-
    eNum=(int)c+5;
    。你的表达式总是会得到一个负整数

  • 您不应该返回
    eNum
    ,而应该将其转换为字符并添加到字符串中,然后在末尾返回字符串(或者您可以创建一个与字符串长度相同的字符数组,继续将字符存储在数组中,然后返回从字符数组创建的字符串)

  • 不应在条件中使用
    a
    ,而应使用
    c
    ,它表示第i个
    索引处的当前字符

  • 我猜代码中并非所有变量都是类的成员变量(实例变量),因此应该在代码中使用数据类型定义它们

  • 代码更改示例-

    String text = toLower; //if toLower is not correct, use a correct variable to get the data to encrypt from.
            String encrypt = "";
    
        for (int i = 0; i <text.length(); i++) {
            char c = text.charAt(i);
            if ((Character.isLetter(c))) {
    
           encrypt += (char)((int)c + 5);
    
            }  
        }
    
    
       return encrypt;
    
    String text=toLower;//如果toLower不正确,请使用正确的变量获取要加密的数据。
    字符串encrypt=“”;
    
    对于(int i=0;i尝试类似的方法,我相信这有几个优点:

    public String encrypt(String in) {
        String workingCopy = in.toLowerCase();
    
        StringBuilder out = new StringBuilder();
    
        for (int i = 0; i < workingCopy.length(); i++) {
            char c = workingCopy.charAt(i);
            if ((Character.isLetter(c))) {
                out.append((char)(c + 5));
            }
        }
    
        return out.toString();
    }
    
    公共字符串加密(字符串输入){
    字符串workingCopy=in.toLowerCase();
    StringBuilder out=新的StringBuilder();
    对于(int i=0;i

    这段代码有点冗长,但可能更容易理解。我介绍了StringBuilder,因为它比执行
    string=string+x

    更有效,实际上它存储最后一个字母的值加上5。问题是eNum是一个int,您甚至从未尝试连接字符串或返回的字符ng
    enum
    。您需要将字符附加到
    加密
    中并返回它。这里有一些东西可以帮助您:啊,谢谢!我仔细查看了它,它似乎有效。我会确保仔细查看它,并确定哪里出错。好的,如果它开始对您有效,请务必接受答案(无论您喜欢哪种答案)通过点击左边的勾号。这将有助于社区。
    public String encrypt(String in) {
        String workingCopy = in.toLowerCase();
    
        StringBuilder out = new StringBuilder();
    
        for (int i = 0; i < workingCopy.length(); i++) {
            char c = workingCopy.charAt(i);
            if ((Character.isLetter(c))) {
                out.append((char)(c + 5));
            }
        }
    
        return out.toString();
    }