黑马程序员技术交流社区

标题: 键盘录入信息的方式有哪几种方式? [打印本页]

作者: 刘弘哲    时间: 2012-11-4 01:14
标题: 键盘录入信息的方式有哪几种方式?
本帖最后由 刘弘哲 于 2012-11-4 16:14 编辑

键盘录入信息的方式有哪几种方式?现在只知道可以用IO包中的字节流可以解决,想知道还有没有别的键盘录入方式。请教!!

作者: 颜峰    时间: 2012-11-4 01:34
键盘录入就是System.in 标准输入流,返回InputStream,使用转换流和缓冲流封装BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

也可以使用扫描器Scanner类,Scanner scanner = new Scanner(System.in);String data = scanner.nextLine();还有返回int等数据类型的方法,看下API吧
我只知道这种方法也可以读取到,不过老师的视频里没有提过,不知道是不是有别的原因,很少使用
作者: 小灰灰    时间: 2012-11-4 01:43
本帖最后由 都彭韬 于 2012-11-4 11:51 编辑

还可以用swing包下的对话框
例如:
  1. String s= javax.swing.JOptionPane.showInputDialog(null);
复制代码
我觉得这样比较好用,
作者: 杨志男    时间: 2012-11-4 10:44
  1. package com.itheima.practice;
  2.    
  3. import java.io.BufferedReader;  
  4. import java.io.Console;  
  5. import java.io.IOException;  
  6. import java.io.InputStreamReader;  
  7. import java.util.Scanner;  
  8. import javax.swing.JOptionPane;  
  9. import junit.framework.TestCase;  
  10.    
  11. public class InputTest extends TestCase {  
  12.       
  13.      /**
  14.       * 利用字节输入流
  15.       */  
  16.      public void testByteReader(){  
  17.          String s = "";  
  18.          System.out.println("ByteReader方式输入");  
  19.          byte[] readIn = new byte[50];  
  20.            
  21.          int count = 0;  
  22.          try{  
  23.       
  24.          System.out.println("you input:");  
  25.          count = System.in.read(readIn);  
  26.       
  27.          }catch(Exception e){  
  28.          e.printStackTrace();  
  29.          }  
  30.            
  31.          System.out.println(new String(readIn, 0, count));   
  32.      }  
  33.       
  34.      /**
  35.       * 利用字符输入流
  36.       */  
  37.      public void testBufferedReader(){  
  38.          String s = "";  
  39.          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
  40.          System.out.println("BufferReader方式输入");  
  41.          try {  
  42.              s = br.readLine();  
  43.          } catch (IOException e) {  
  44.              e.printStackTrace();  
  45.          }  
  46.    
  47.          System.out.println(s);  
  48.            
  49.            
  50.      }  
  51.   /**
  52.    * 扫描器类(Scanner)从控制台中读取字符串
  53.    */  
  54.      public void testScanner(){  
  55.          String s = "";  
  56.          Scanner sc = new Scanner(System.in);  
  57.    
  58.          System.out.println("Scanner方式输入");  
  59.          s = sc.next();  
  60.          System.out.println(s);  
  61.    
  62.          }  
  63.      /**
  64.       * 对话框输入数据
  65.       */  
  66.      public void testJOptionPane(){  
  67.       
  68.          System.out.println("JOptionPane方式输入");  
  69.          String name = JOptionPane.showInputDialog("what is your name?");  
  70.            
  71.          System.out.println(name);  
  72.    
  73.          }  
  74.      public void testConsole(){  
  75.          /** jdk1.6新功能
  76.           * Java要与Console进行交互,不总是能得到可用的Java
  77.           * Console类的。一个JVM是否有可用的Console,依赖于底层平台和JVM如何被调用。
  78.           * 如果JVM是在交互式命令行(比如Windows的cmd)
  79.           * 中启动的,并且输入输出没有重定向到另外的地方,那么就我们可以得到一个可用的Console实例。
  80.           * 当你有Eclipse或NetBean中运行以上代码时Console中将会有以下文字输出: Console is unavailable.
  81.           *表示Java程序无法获得Console实例,是因为JVM不是在命令行中被调用的,或者输入输出被重定向了。
  82.           */  
  83.          Console console=System.console();  
  84.            if (console == null) {     
  85.                  throw new IllegalStateException("不能使用控制台");     
  86.              }     
  87.          String s= console.readLine("输入你的参数");  
  88.          System.out.println(s);  
  89.    
  90.          }  
  91.       
  92.      public static void main(String[]  args){  
  93.          /**
  94.           * 主函数参数输入
  95.           */  
  96.          System.out.println(args[0]);  
  97.      }  
  98.       
  99. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2