猿问

关于DOS 下用JAVA来接收输入的话可以中断吗????

用Java语言实现在dos环境下接受用户输入密码,用*号来显示.
记住了,一定要用*号显示,不可以不显示!

如果实在不行,可否可点其它解决方案.
DOS下可以监听键盘吗!!!!!!????????
还有就是希望用具体代码来说话.

DOS 下用JAVA来接收输入的话可以中断吗????
如何控制输入一个字符时,显示*号.
String str=null;//定义个接受输入标准输入 
BufferedReader stdIn=new BufferedReader(new InputStreamReader(System.in)); //这里接收输入,可以中断??
try {
str=stdIn.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

慕姐4208626
浏览 185回答 2
2回答

米琪卡哇伊

dos的控制台程序没试过有没有密码的可以给你一个方案 你输入的时候print("*")按一个键print("*")一次然后接收输入的时候你不打印出来 而是保存成一个string 等你调用密码的时候就调用这个string就可以了...-------------------------------------仔细研究了下 是没这么简单,要用线程来监听 查了些资料 给你代码//InputMasking.java  import java.io.*;  public class InputMasking  {  String getPassword(String initial) throws IOException  {  MaskingThread listeningthread = new MaskingThread(initial);  Thread thread_instance = new Thread(listeningthread);  String password = "";  thread_instance.start();  while (true)  {  char input = (char)System.in.read();  listeningthread.stopMasking();  if (input == '\r')  {  input = (char)System.in.read();  if (input == '\n')  break;  else  continue;  }  else if(input == '\n')  break;  else  password += input;  }  return password;  }  }  //MaskingThread.java  import java.io.*;  class MaskingThread extends Thread  {  private boolean stop = false;  private int index;  private String initial;  public MaskingThread(String initial)  {  this.initial = initial;  }  public void run()  {  while(!stop)  {  try  {  this.sleep(1);  }  catch (InterruptedException ex)  {  ex.printStackTrace();  }  if (!stop)  {  System.out.print("\r" + initial + " \r" + initial);  }  System.out.flush();  }  }  public void stopMasking()  {  this.stop = true;  }  }  //CmdLineUtility.java  import java.io.*;  public class CmdLineUtility  {  public static void main(String argv[])  {  InputMasking masking = new InputMasking();  String password = null;  try  {  password = masking.getPassword("请输入登录密码: ");  }  catch(IOException ex)  {  ex.printStackTrace();  }  System.out.println("您输入的密码为: " + password);  }  }  这三个JAVA文件依次编译,运行最后一个就是

暮色呼如

System.out.print("*");System.in //接受键盘输入//接受一个按键 打印 一个 * 只是接受 按键 像Oracle 输入密码一样!!监听 键盘就可以了不过 你必须到 dos下面 编译 java文件如果你是用编程工具的话 他会把 dos 环境改为自己的环境补充: 没有awt 或者 swing 等空间是没有 监听 键盘的功能方法 编译文件的时候生成控件 再隐藏进行监听不过这样 可能被认为是毒所以建议JAVA里调用了C语言的getch()方法就能实现 得到键盘值的功能再次补充:要实现你所说的功能就必须有一个从标准输入读取数据时不做任何缓存的方法, 即读取一个字节后马上返回的方法(比如视窗平台上 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 程序。 
随时随地看视频慕课网APP

相关分类

Java
我要回答