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