Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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_For Loop - Fatal编程技术网

Java 字符串生成中的逻辑错误

Java 字符串生成中的逻辑错误,java,for-loop,Java,For Loop,我有一个我正在编写的程序,它应该对一组预先确定的字符串进行加密和解密。提供了主类,我必须编写依赖项,但是没有正确调用我的对象,从而造成了大量编译时错误。这两个依赖项各自可以很好地编译,因此我必须在类之间的接口中犯一个错误。这是相当多的代码,因此这里有一个pastebin链接: 编辑:现在我发现了主要的逻辑错误。我知道它在加密程序中,也可能在解密程序中,但我以前独立使用过解密程序,我在这里所做的只是将X从一个固定值更改为难度 编辑2:现在已经修复了randChar,现在我只需要找出我的en/de

我有一个我正在编写的程序,它应该对一组预先确定的字符串进行加密和解密。提供了主类,我必须编写依赖项,但是没有正确调用我的对象,从而造成了大量编译时错误。这两个依赖项各自可以很好地编译,因此我必须在类之间的接口中犯一个错误。这是相当多的代码,因此这里有一个pastebin链接:

编辑:现在我发现了主要的逻辑错误。我知道它在加密程序中,也可能在解密程序中,但我以前独立使用过解密程序,我在这里所做的只是将X从一个固定值更改为难度

编辑2:现在已经修复了randChar,现在我只需要找出我的en/decrypt循环中的错误

以下是我的新错误/输出:

==============================
Simulating difficulty level 0:
Encrypting String: kitty ...
Encrypted as: xvrdsoyttik
Decrypting String: xvrdsoyttik ...
Decrypted as: kkkkkkkkkkkk
Fail!
==============================
Simulating difficulty level 1:
Encrypting String: test string ...
Encrypted as: gqpyqfdqqwvcqnirts tset
Decrypting String: gqpyqfdqqwvcqnirts tset ...
Decrypted as: test strinqcvwqqdfqypqg
Fail!
==============================
Simulating difficulty level 2:
Encrypting String: Agent: James Bond ...
Encrypted as: dnjomBe bsveimqaiJa :tnegA
Decrypting String: dnjomBe bsveimqaiJa :tnegA ...
Decrypted as: Aet James Bon
Fail!
==============================
加密机:

/** 
    encryptString encrypts the string, as well as stores the original for later use
    @param str The string to be encrypted
    @return encrypted The encrypted string
    */
    public String encryptString(String str)
    {
        int length = str.length();
        origStr = str;
        int x = diff;
        StringBuilder codeRev = new StringBuilder(str).reverse();

         for (int pos = 0; pos <= length; pos++)
         {
            if (x <= length + diff) //removed 
            {
                codeRev.insert(x, randomLetter());
            }               
            x = x + diff + 1;
         }
         encryptedStr = codeRev.toString();
         return(codeRev).toString();

    }

这个错误非常直接-在
解密程序中没有
getDecryptedStr()
方法,在
加密程序中没有
getEncryptedStr()
方法


一般来说,如果您遇到这些错误,看起来您没有使用任何IDE。你应该从一个开始工作,像或。您将立即看到此类编译错误

我认为没有人会阅读所有230行代码。提取问题并仅发布相关代码。如果你不告诉我们这些编译器错误是怎么说的,你认为任何人都能发现你的问题吗?修复了编译时错误,现在我能想到的只有两个逻辑错误。我的循环增量肯定有问题,但我无法解决。谢谢,我大约两分钟前就发现了!我正在使用textpad++和一些插件,我将在将来研究eclipse,谢谢。不幸的是,一些逻辑错误已经漏掉了,即在加密/解密过程中,你愿意帮忙吗?@brodieR-你的问题是
x出现了未知字符,这一定是randChar的错,但是您对encrypt-decrypt的修复似乎没有明显的区别我不是在说randChar,我是在说
decryptString(String code)
-如果x=length,您将得到超出范围的索引,因为charAt()的工作范围是从0到length-1。它应该是
x
/**
decryptString decrypts the code based on using the difficulty as the increment.
@param code The encrypted string
@return decrypted The decrypted string
*/
    public String decryptString(String code)
    {
        int length = code.length();
        int x = 0; //to 1
        encryptedStr = code;

        String codeRev = new StringBuilder(code).reverse().toString();

        StringBuilder decrypted = new StringBuilder();

         for (int pos = 0; pos <= length; pos++)
         {
            if (x < length) //removed <=
            {
                decrypted.append(codeRev.charAt(x));
            }               
            x = x + diff;
         }
         decryptedStr = decrypted.toString();
         return(decrypted).toString();
    }
/**
    Generates a random letter
    @return letter The random letter
    */
    public char randomLetter()
    {
        Random ranChar = new Random();
        char cr = (char)(ranChar.nextInt(26)+ 'a');
        return cr;
    }