我已经编写了一些简单的代码来显示一个从一边到另一边移动的加载字。是否可以在前一个字符串保持打印时打印另一个字符串?
看起来像这样:
.. loading(这个词一直在移动)
加载主文件。
已加载备份文件 ....(这些线只在加载仍在移动时才打印一次)
我希望下一行的代码与加载代码分开。
加载字代码:
public static void main( String[] args ) throws Exception
{
for ( int i=0; i<86; i++ )
{
if ( i%17 == 0 )
System.out.print(".......... \r");
if ( i%17 == 1 )
System.out.print(".........L \r");
if ( i%17 == 2 )
System.out.print("........Lo \r");
if ( i%17 == 3 )
System.out.print(".......Loa \r");
if ( i%17 == 4 )
System.out.print("......Load \r");
if ( i%17 == 5 )
System.out.print(".....Laodi \r");
if ( i%17 == 6 )
System.out.print("....Loadin \r");
if ( i%17 == 7 )
System.out.print("...Loading \r");
if ( i%17 == 8 )
System.out.print("..Loading. \r");
if ( i%17 == 9 )
System.out.print(".Loading.. \r");
if ( i%17 == 10 )
System.out.print("Loading... \r");
if ( i%17 == 11 )
System.out.print("oading.... \r");
if ( i%17 == 12 )
System.out.print("ading..... \r");
if ( i%17 == 13 )
System.out.print("ding...... \r");
if ( i%17 == 14 )
System.out.print("ing....... \r");
if ( i%17 == 15 )
System.out.print("ng........ \r");
if ( i%17 == 16 )
System.out.print("g......... \r");
Thread.sleep(150);
}
}
答案 0 :(得分:1)
您必须在单独的Thread
中执行此操作。不幸的是,您必须确保在print
期间您的两个线程不会有上下文切换。假设您要打印单词loading
和COUNTING
。然后,在没有任何同步的情况下,打印的消息很可能类似于:loCOUaNTdiINGing
。
请在此处阅读Java中的并发性:http://tutorials.jenkov.com/java-concurrency/index.html
答案 1 :(得分:1)
亚当正在试图告诉你,你必须使用一个线程。
一个线程是java中的一个进程,代码在主线程处理器中执行,但是你可以创建另一个代码来同时执行另一个东西,在计算机信息中这种事情被称为并发。
我建议您在Java中学习更多有关线程的知识,这可能会对您有所帮助:http://tutorials.jenkov.com/java-concurrency/creating-and-starting-threads.html
对于另一方,您可以在条件结束时放置System.out.println以放置另一个字符串。