在Java中,如何使代码在继续使用println之前等待对象?

在Java中,如何使代码在继续使用println之前等待对象?,java,encryption,Java,Encryption,我有一个加密到Aes-128的代码,它采用扫描方法并加密。当程序运行时,加密将在不等待响应的情况下终止。我试过了 try { Thread.sleep(10000); } catch(InterruptedException ex) { Thread.currentThread().interrupt(); } 但是如果我输入的东西很长,它就会加密 java.util.Scanner[delimiters=\p{javaWhit

我有一个加密到Aes-128的代码,它采用扫描方法并加密。当程序运行时,加密将在不等待响应的情况下终止。我试过了

    try {

         Thread.sleep(10000);

    } catch(InterruptedException ex) {

         Thread.currentThread().interrupt();
    }
但是如果我输入的东西很长,它就会加密

java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][require input=false][source closed=false][skipped=false][group separator=\,][decimal separator=.][positive prefix=\Q-\E][positive suffix=][negative suffix=]NaN string=\Q�\E] [无限字符串=\Q∞\[英]

无需等待扫描仪的响应

这是代码(它是从以下位置修改的代码):


(我觉得这里的缩进可能有点奇怪)

我试过代码,效果很好。。。。如果您是从单元测试(即,在JUnit中)开始的,那么单元测试线程可能会在响应返回之前结束。我在长时间(er)运行的任务中遇到过这个问题如果是在单元测试中,您可以尝试添加一个类似这样的后类调用,以强制单元测试等待

    @AfterClass
    public static void afterClass() {

        // the threads to finish before we terminate JUNIT
        Thread sleepyThread = new Thread() {
            public void run() {
                // wait for a bit 
                try {
                    this.sleep(5000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        };

        // start the sleepy thread
        try {
            sleepyThread.start();
            sleepyThread.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    System.err.println("Done running tests");

    }

我试过这个代码,它运行得很好。。。。如果您是从单元测试(即,在JUnit中)开始的,那么单元测试线程可能会在响应返回之前结束。我在长时间(er)运行的任务中遇到过这个问题如果是在单元测试中,您可以尝试添加一个类似这样的后类调用,以强制单元测试等待

    @AfterClass
    public static void afterClass() {

        // the threads to finish before we terminate JUNIT
        Thread sleepyThread = new Thread() {
            public void run() {
                // wait for a bit 
                try {
                    this.sleep(5000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        };

        // start the sleepy thread
        try {
            sleepyThread.start();
            sleepyThread.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    System.err.println("Done running tests");

    }
你必须使用

String toEncrypt = encrypt.next(); 
而不是

String toEncrypt = encrypt.toString(); 
然后,扫描仪将等待,直到按下Enter键

.toString()立即停止等待过程,并提供当前扫描仪内容的字符串表示形式。

您必须使用

String toEncrypt = encrypt.next(); 
而不是

String toEncrypt = encrypt.toString(); 
然后,扫描仪将等待,直到按下Enter键


.toString()立即停止等待过程,并提供当前扫描仪内容的字符串表示形式。

代码是否在未修改的情况下工作?如果是这样的话,也许试着回溯你的错误?有错误吗?您所说的
加密在不等待响应的情况下终止是什么意思?如果将
System.out.flush()
放在main的末尾会怎么样?必须使用“String-toEncrypt=encrypt.next();”而不是“String-toEncrypt=encrypt.toString();”。然后,扫描仪将等待,直到按下Enter键。在未修改代码的情况下,代码是否正常工作?如果是这样的话,也许试着回溯你的错误?有错误吗?您所说的
加密在不等待响应的情况下终止是什么意思?如果将
System.out.flush()
放在main的末尾会怎么样?必须使用“String-toEncrypt=encrypt.next();”而不是“String-toEncrypt=encrypt.toString();”。然后扫描仪会一直等到按下回车键。啊。。。我假设他是通过对象的toString来测试加密的。:)啊。。。我假设他是通过对象的toString来测试加密的。:)