2011-05-17 99 views
58

我有一个控制台应用程序,在执行其任务后,必须向用户提供反馈,例如“操作完成”或“操作失败”以及详细的错误。让控制台等待用户输入关闭

问题是,如果我只是“让它运行”,输出消息将被打印出来,但控制台很快就会关闭,没有时间阅读消息。据我所知,在C++中,每个控制台应用程序都会以“按任意键退出”或类似的方式结束。在C#中我可以模拟这种行为

Console.ReadKey(); 

但我怎么能在Java中做到这一点?我使用的扫描仪类,但考虑到“输入”是我的扫描仪的实例:

input.next() 
System.exit(0); 

“任意键”会工作,除了回报,这是一个相当大的交易在这里。任何指针?

回答

70

在Java中,这将是System.in.read()

+12

这满足了“按Enter键退出”,而不是“按任意键退出” ,因为在按下回车键之前它不会继续。 – 2011-05-17 14:26:14

+0

我想“按回车键退出”仍然比“按任意键除了进入退出”更好。谢谢,那会为我做。 – makoshichi 2011-05-17 14:38:04

+0

我的应用程序只是挂在System.in.read() – marcolopes 2012-11-07 06:04:54

5

我已经把什么x4u说。 Eclipse想要一个try catch块,所以我让它为我生成它。

try { 
     System.in.read(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

它也许可以有各种关于它花里胡哨的,但我认为这需要一个命令行窗口,而没有退出,这应该是罚款初学者。

另外我不知道这是多么普遍(这是我第一次制作jar文件),但它不会自行运行,只能通过bat文件。

java.exe -jar mylibrary.jar 

以上是bat文件在同一文件夹中的含义。似乎是一个安装问题。

Eclipse的教程来自: http://eclipsetutorial.sourceforge.net/index.html

一些答案的也来了:Oracle Thread

16

我想补充一点,通常你会想要程序等待只有当它连接到一个安慰。否则(如果它是pipeline的一部分),没有意义打印消息或等待。对于您可以使用Java的Console这样的:

import java.io.Console; 
// ... 
public static void waitForEnter(String message, Object... args) { 
    Console c = System.console(); 
    if (c != null) { 
     // printf-like arguments 
     if (message != null) 
      c.format(message, args); 
     c.format("\nPress ENTER to proceed.\n"); 
     c.readLine(); 
    } 
} 
2

您可以只使用nextLine();如暂停

import.java.util.Scanner 
// 
// 
Scanner scan=new Scanner(); 

void Read() 
{ 
    System.out.print("Press any key to continue . . .); 
    scan.nextLine(); 
} 

但是任何你按下按钮除外输入您必须按下后进入,但我发现它更好比scan.next();

2

我用简单的黑客,要求窗口使用cmd命令,并将其发送到null。

// Class for Different hacks for better CMD Display 
import java.io.IOException; 
public class CMDWindowEffets 
{ 
    public static void getch() throws IOException, InterruptedException 
    { 
     new ProcessBuilder("cmd", "/c", "pause > null").inheritIO().start().waitFor(); 
    }  
} 
1
public static void main(String args[]) { 
     Scanner s=new Scanner(System.in); 

     System.out.println("Press enter to continue....."); 

     s.nextLine(); 

    } 

nextline是相当不错的选择,因为它会帮助我们运行下一行只要按下回车键