JavaStep --- 3. 读取输入
2015-08-08 23:24
375 查看
在Java中,向控制台输出内容很容易,只要通过如下语句就可以在控制台输出内容
System.out.println("This is test text!");
如果要想在控制台获取输入,在Java中,必须先创建一个Scanner(JDK >= 1.5)对象,并将之与标准输入流相关联
Scanner in = new Scanner(System.in);
String name = in.nextLine();
注意:Scanner不止有nextLine方法,还有next、nextInt、nextDouble等方法。
下面的程序为使用Scanner在控制台读取输入的例子
不难看出,以上从控制台读取输入可以实现,但是全是明文,不适合输入密码等信息。在JDK1.6引入Console类来实现在控制台输入密码的需求
注意:不总是能得到可用的Console, 一个JVM是否有可用的Console依赖于底层平台和JVM如何被调用.
如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地
方,那么就可以得到一个可用的Console实例。
使用Console类实现读取密码的例子如下
Java.lang.System.in (目前JDK版本均支持)
Java.util.Scanner (JDK版本>=1.5)
Java.io.Console(JDK版本>=1.6) ==> 通常用于读入密码,因为不回显字符
注:本文仅为本人肤浅的学习,如有纰漏,望请指正!同时、本文仅供参考!
本文出自 “Keyman” 博客,转载请与作者联系!
System.out.println("This is test text!");
如果要想在控制台获取输入,在Java中,必须先创建一个Scanner(JDK >= 1.5)对象,并将之与标准输入流相关联
Scanner in = new Scanner(System.in);
String name = in.nextLine();
注意:Scanner不止有nextLine方法,还有next、nextInt、nextDouble等方法。
下面的程序为使用Scanner在控制台读取输入的例子
import java.util.*; / ** * This program is console input * @author keyman * @version 1.0.0 2015-8-8 * */ public class InputTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String name = ""; int age = 0; System.out.print("what's your name? "); Scanner in = new Scanner(System.in); name = in.nextLine(); System.out.print("how old are you? "); age = in.nextInt(); System.out.println("hello, "+name+". next year, you'll be "+(age + 1)); } } ************************此处为程序运行的情况************************************* what's your name? keyman how old are you? 20 hello, keyman. next year, you'll be 21 ********************************************************************************* 说明:Scanner有时候还是很方便的,例如如下例子就是使用Scanner从文件读取输入 import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; /** * This program is console input * @author keyman * @version 1.0.0 2015-8-8 * */ public class InputTest { /** * @param args */ public static void main(String[] args) { //此段代码为向c:\\console.txt中写入内容 try{ FileWriter filewriter = new FileWriter("c:\\console.txt"); filewriter.write("1 2 3 4 5 6 7 8 9 last, 这是我的测试文本。"); filewriter.close(); }catch(IOException e) { System.out.println("file console.txt write is exception..."); } //此段代码为从c:\\console.txt读取内容并输出 FileReader filereader = null; try { filereader = new FileReader("c:\\console.txt"); Scanner scanner = new Scanner(filereader); while (scanner.hasNext()) { System.out.print(scanner.next()); } } catch (FileNotFoundException e) { throw new RuntimeException("File " + "c:\\console.txt" + " not found!"); } finally { if (filereader != null) try { filereader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
不难看出,以上从控制台读取输入可以实现,但是全是明文,不适合输入密码等信息。在JDK1.6引入Console类来实现在控制台输入密码的需求
注意:不总是能得到可用的Console, 一个JVM是否有可用的Console依赖于底层平台和JVM如何被调用.
如果JVM是在交互式命令行(比如Windows的cmd)中启动的,并且输入输出没有重定向到另外的地
方,那么就可以得到一个可用的Console实例。
使用Console类实现读取密码的例子如下
import java.io.Console; import java.util.*; /** * This program is console input * @author keyman * @version 1.0.0 2015-8-8 * */ public class InputTest { /** * @param args */ public static void main(String[] args) { try{ Console co = System.console(); String name = co.readLine("what's your name? "); char [] password = co.readPassword("Your password is? "); System.out.print("hello, "+name+"."+"Your input password is "); for (int i=0;i<password.length;i++) { System.out.print(password[i]); } }catch(NullPointerException e){ System.out.println("Console is not available"); //e.printStackTrace(); } } } ************************此处为程序运行的情况************************************* what's your name? keyman Your password is? hello, keyman.Your input password is keyman *********************************************************************************接下来再来讲解另一个从控制台获取输入的方法,此方法在各个版本均被支持。即直接使用System.in
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * This program is console input * @author keyman * @version 1.0.0 2015-8-8 * */ public class InputTest { /** * @param args */ public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; try { System.out.print("Please input some string: "); str = br.readLine(); } catch (IOException e) { e.printStackTrace(); } System.out.println("The input information from console ==> " + str); } }总结:在Java中、从控制台获取输入的方式有三种,具体如下
Java.lang.System.in (目前JDK版本均支持)
Java.util.Scanner (JDK版本>=1.5)
Java.io.Console(JDK版本>=1.6) ==> 通常用于读入密码,因为不回显字符
注:本文仅为本人肤浅的学习,如有纰漏,望请指正!同时、本文仅供参考!
本文出自 “Keyman” 博客,转载请与作者联系!
相关文章推荐
- ognl表达式入门
- 如何删除JAVA集合中的元素
- 【常用】Java万年历代码
- 【Java多线程】之一:Thread Simple Example
- 排序--快速排序--详细分析
- JAVA解析XML之SAX方式
- jdk1.5新特性之泛型(二)
- Java除法运算的陷阱
- Java中String的基础知识
- Android BuildConfig.DEBUG的妙用(Eclipse)
- MyEclipse的项目中把 java EE 5 Libraries 删掉后怎么重新导入
- MyEclipse的项目中把 java EE 5 Libraries 删掉后怎么重新导入
- pring+SpringMVC+Mybatis
- jdk新特性之可变参数
- java关于==与equals的讨论
- springMVC
- Java学习——话说J2EE发展历程
- java常用类,常用包,常用接口,运行时错误
- spring
- Java构造函数的public,private,protected