要实现你所说的功能就必须有一个从标准输入读取数据时不做任何缓存的方法,

即读取一个字节后马上返回的方法(比如视窗平台上 C/C++ 头文件 conio.h 里声明的 getch( ) )。

可惜的是,到目前为止,Java 里没有这种方法。

就连返回一个字节的 System.in.read( ) 也要等到碰上回车才返回(行缓存,即 line-buffered)。

所以现在你唯一的选择就是通过本机接口(JNI)调用本机方法(native method)。

步骤有 6 个。以下是装有 VC6 的视窗平台上的实现范例:

1)编写我们的 Java 程序。在程序里,以 native 这个关键字为将被调用的本机方法做本机声明,

并且加载我们将在第 5 步里创建的动态连接库:

public class PressAnyKeyToContinue {

static native void pause( ); // 本机声明

public static void main( String[ ] args ) {

System.loadLibrary( "PressAnyKeyToContinue" ); // 加载我们的动态连接库

pause( ); // 调用本机方法跟调用一般的方法没两样

}

}

2)编译我们的 Java 程序,以便生成类文件。

3)用 javah.exe 生成对应的 C/C++ 头文件(PressAnyKeyToContinue.h):命令是 javah PressAnyKeyToContinue 。

4)实现头文件里声明的所有方法 / 函数(这例子用 C,所以以下的代码是在 PressAnyKeyToContinue.c 里):

#include "PressAnyKeyToContinue.h"

JNIEXPORT void JNICALL Java_PressAnyKeyToContinue_pause( JNIEnv * jenv, jclass jc ) {

system( "pause" );

}

5)用编译器生成动态连接库:

命令是 cl -Ic:\jdk2\include -Ic:\jdk2\include\win32 -LD PressAnyKeyToContinue.c 。

(当然,假设了 c:\jdk2\ 是 JDK 的路径。)

6)运行我们的 Java 程序。

java console press any key_请问在JAVA中怎么实现在控制台下press any key to continue的功能?...相关推荐

  1. java redis 批量删除key_互联网大厂Java工程师面试指南——Redis篇

    注意一下咯:更多关于Java集合.JVM.多线程并发.spring原理.微服务.Netty 与RPC .Kafka.日记.设计模式.Java算法.数据库.Zookeeper.分布式缓存.数据结构面试解 ...

  2. java console 交互_实例讲解java中Console类的用法

    java的Console类的使用方法及实例 java的Console类的使用方法及实例 JDK 6中提供了java.io.Console类专用来访问基于字符的控制台设备.如果你的Java程序要与Win ...

  3. JDK 6中新增的Java Console类功能概览

    转载自  JDK 6中新增的Java Console类功能概览 JDK 6中提供了java.io.Console类专用来访问基于字符的控制台设备.如果你的Java程序要与Windows下的cmd或者L ...

  4. java面试题36 已知如下的命令执行 java MyTest a b c 请问哪个语句是正确的? ( )

    java面试题36 已知如下的命令执行 java MyTest a b c 请问哪个语句是正确的? ( ) A args[0] = "MyTest a b c" B args[0] ...

  5. 请问在JAVA编程中什么叫耦合?什么又叫解藕? 悬赏分:0 - 解决时间:2008-3-8 12:55...

    模块一的实现依赖于模块二,更改模块二后,模块一也得更改,那么二者就有耦合.修改程序,使得更改模块二后,模块一不受影响,那么就叫解藕 请问<java编程思想>中的"完全解藕&quo ...

  6. java socket 回调函数_请问Java网络编程如何在不使用多线程的情况下实现异步返回?...

    我指的是在不使用多线程的情况下进行并发处理 具体的情况是,在不使用多线程的情况下,服务器侦听某个端口,在有连接进来的时候会调用某个函数对此连接进行处理,但是由于处理的过程可能会比较长,为了不让后面连接 ...

  7. java下面哪些定义正确,请问,以下哪些是java中定义的合法关键字?请选择所有正确答案:...

    请问,以下哪些是java中定义的合法关键字?请选择所有正确答案: 答:interface sizeof volatile "凡是亲眼所见的都是对客观事实的真实反映",这个命题 答: ...

  8. Java类Demo中存在方法func1、func2、func3和func4,请问该方法中,哪些是不合法的定义?( )

    Java类Demo中存在方法func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{float func1(){int i=1;r ...

  9. java console类_Java Console

    Java Console 1 什么是Java Console Java Console类用于从控制台获取输入.它提供了读取文本和密码的方法. 如果您使用Console类读取密码,则不会向用户显示该密码 ...

最新文章

  1. 安装python-devel开发包
  2. pyqt5实战之幻彩大蛇(贪吃蛇)-1
  3. 走财运健步——青龙羊毛
  4. 冬天到了:你检查过你的防冻液了吗!
  5. [Android Studio] Android Studio如何查看branch列表及切换branch(转载)
  6. 最小生成树之克鲁斯卡尔算法 ( java版)
  7. c#调用.exe程序
  8. 圣诞抽奖 | 2018年的开发者,经历了裁员、加班种种不堪,2019年的你如何获得升职加薪的机会?...
  9. java 获取pdf总页数_如何获取PDF文件的总页数 - iTextSharp,c#
  10. 自动化所在语音识别研究中获进展
  11. apache反向代理实战
  12. Android实现“是否退出”对话框和“带图标的列表”对话框
  13. Tcp协议socket通信数据包粘包问题分析及解决方案
  14. uni-app广告总结
  15. qq邮箱发送邮件服务器类型,设置QQ邮箱为发送邮件服务器的详细带图步骤
  16. Delphi的常用函数
  17. 库克考虑卸任苹果 CEO,谁会是下一任接班人?
  18. 音频源和音频监听脚本
  19. 2019年股票股息率分红最高排名
  20. 新增免费根据商品条码查询商品名称API

热门文章

  1. Dreamweaver操作常见的问题
  2. 恢复xfs文件系统superblock实验
  3. tftp 在线更新 cisco switch IOS
  4. python购物车程序-Python编写购物车程序
  5. 广州自由自在进口食品休闲消费的趋势
  6. 【PP生产订单】入门介绍(三)
  7. CSS问题的撰写准则
  8. 写工作总结的要领是什么?
  9. 用VB开发SAP接口程序
  10. 如何隐藏你写的ABAP代码