已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
方法1.Scanner scanner=new Scanner(System.in); 方法2.BufferedReader reader=new BufferedReader(new InputStreamReader(System.in); 方法3.byte buffer = new bytelen;trySystem.in.read(buffer,0,len);catch(Exception e)String str = new String(buffer);一 InputStreamReader流String str;InputStreamReader ir;boolean first = true; int c; System.out.println(input the String:); try while(c = ir.read() != r ) if(first) System.out.print(get string:); first = false; else System.out.print(.); str = str+(char)c; System.out.print(char)c +(+c+); 这个方法比较笨拙并且适合输入一次字符串的情况,如果需要多次输入字符串那将会出现问题,这个问题很隐晦,在你第二次输入字符串以后包括第二次输入的字符串都会得到一个t字符在字符串的开始,这个问题处理很棘手的,并且如果不注意就发现不了,如果在以后的字符串的操作中有字符串转换那将更麻烦,测试输入字符串的长度会发现长度是你输入的长度+1,很KB(恐怖)的。这个方法是教科书上的例子,就不说是哪个版本了,害的我很苦啊!二 BufferReader流BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in); String str=buffer.readLine();这个方法很方便,又能让你想输入几次输入几次,不会出现上面那个问题。因为每次都会创建一个新的输入流,因此每次输入的不会相互影响。比较这两种方法主要是为了区分在不同的情况下使用不同的方法,不一定方法一没有用,当你需要的不是字符串而是字符时,方法一会更方便。一楼已经提供了InputStreamReader类中的方法接收。 但我们一般不用这个, 这个已经是很久以前的玩意如果你只是做控制台应用程序的话 建议用Scannerimport java.util.Scanner; public class Test public static void main(String args) Scanner input = new Scanner(System.in); / System.in 是必要的参数 它将传递你系统的输入“流”System.out.print(请输入一个数字); int m = input.nextInt(); / 接收int类型 System.out.print(请输入你的名字:); String name = input.next(); / 接收一个String类型System.out.print(请输入您的身高:); double d = input.nextDouble(); / 以此类推 / 更详细 请参见 JDK 帮助文档(API) Java - util 包中的 Scanner类! 1楼说的那两种方法本质上是一样的,都是用InputStreamReader来把标准输入流System.in转换成字符流,用BufferedReader只不过是把InputStreamReader包装成了有缓冲的输入流,性能比直接用InputStreamReader好。2楼说的方法是一种比较好的替代方法,是Sun为了简化读取键盘操作而提供的新的API,但是你使用的JDK必须是1.5及以上版本。对于一些老的程序,需要兼容jdk 1.4的话,就不能用这种方法了,只能用1楼的方法在Java中使用键盘输入数据【总结篇】 分类: Java 2010-06-07 17:26 139人阅读 评论(0) 收藏 举报 在Java中不像C语言中那么方便直接使用scanf(),下面是我积累的一些方法:1.控制台输入数据 1.1 主方法的形式参数 1.2 利用字节输入流 1.3 利用字符输入流 1.4 利用文本扫描类2. 对话框输入数据下面将针对这几种方法分别利用例子进行说明:1. 控制台输入数据 1.1 主方法的形式参数 在Java中利用main(String args)中的args数组来对参数进行赋值,有下例:package InputTest;public class DataKeyboardInput1 /*主方法的形式参数来输入数据 * DataKeyboardInput1.java * param args */public static void main(String args) / TODO Auto-generated method stub System.out.println(args0);在命令行下输入javac DataKeyboardInput1.java -java DataKeyboardInput1 HelloWorld 输出就是 HelloWorld 了 1.2 利用字节输入流 字节输入流System.in 是类InputStream的常量对象,调用read()方法可以从键盘接收数据。实现的步骤是:先把数据读入字节数组中,然后利用字节数组定义字符串,最后把字符串转化为需要的数据类型。 package InputTest;import java.io.*;public class DataKeyboardInput2 /*利用字节输入流来输入数据 * DataKeyboardInput2.java * param args */public static void main(String args) / TODO Auto-generated method stub byte buf=new byte10; /字节数组,输入为10个 String str; int num = 0; try /把数据读入到字节数组中 System.in.read(buf); /利用字节数组创建字符串 str=new String(buf,0); /把字符串数据转换为整型数据 num=Integer.parseInt(str.trim(); catch(Exception e) System.out.print(e); System.out.println(num);1.3 利用字符输入流 字符输入流BufferedReader是从字符输入流中读取文本,缓冲各个字符,从而提供字符,数组和行的高效读取。常用方法: read(): 读取单个字符; readLine():读取一行字符,即为读取一个字符串package InputTest;import java.io.*;public class DataKeyboardInput3 /*利用字符输入流来进行输入处理 * param args */public static void main(String args) throws IOException / TODO Auto-generated method stub BufferedReader br=new BufferedReader(new InputStreamReader(System.in); String str=; int num = 0; try str=br.readLine(); num=Integer.parseInt(str); catch(IOException e) System.out.println(e.toString(); System.out.println(num);1.4 利用文本扫描类 文本扫描类Scanner是jdk5.0新增加的类,它是一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器,它使用分隔符模式将其输入分解为标记默认情况下该分隔符模式与空白匹配,然后使用不同的next方法将得到的标记转换为不同类型值。获取基本类型数据的方法是: 整型:nextInt() 单精度:nextFloat() 双精度: nextDouble() 字符串: next()package InputTest;import java.util.Scanner;public class DataKeyboardInput4 /*利用文本扫描类来进行输入处理 * param args */public static void main(String args) / TODO Auto-generated method stub Scanner input=new Scanner(System.in); int num=input.nextInt(); System.out.println(num);2. 对话框输入数据 使用JOptionPane创建输入对话框,实现键盘输入 showConfirmDialog(): 询问一个确认问题,如yes/no/cancer showInputDialog(): 提示要求某些输入 showMessageDialog(): 告知用户某事已经发生 其中,输入对话框的常用参数形式有: showInputDialog(Object message) : message 表提示信息 showInputDialog(Object message,Object initialSelectionValue): 如果没有输入数据,则默认初始值为initalSlectionValuepackage InputTest;import javax.swing.JOptionPane;public class DataIn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/PPZL 039-2025黄河流域内蒙古段草地生态系统服务价值评估技术规程
- T/CECCEDA 8-2026人工智能 数据资产可信流通管理框架
- T/CHASA 017-2024家电上门服务全流程用户体验评价规范
- T/CSMT-YB 018-2026γ射线成像探测系统检测规范
- GB/T 591-2026船用法兰铸铁截止止回阀
- 2025~2026学年河北省廊坊市校联考冀教版六年级上册第三次月考数学试卷【附答案】
- 江苏省新沂市度第二期期2027届数学七上期末联考模拟试题含解析
- PHP工程师经典面试题(含详细答案解析)
- 2025-2026学年安徽省明光市初中数学七年级期末下册自我评估高频题(附答案)
- 除尘安全培训试题及答案
- 2026年新版gcp考试题库及答案pdf
- 小学四年级道德与法治教学设计:单元整体教学视域下《反对浪费》大单元实践探索
- 精神卫生行业精神科医师精神诊疗规范手册(执行版)
- E三相异步电动机的运行维护与故障处理
- 《“探界者”钟扬》2026-2027学年统编版高一语文必修上册
- 被执行人财产申报表(官方标准完整版)
- 市政道路工程试验检测计划
- 第19课《想和做》课件 2026-2027学年统编版语文九年级上册
- 2026年食品安全总监管理员考试题库
- 2025国家义务教育质量监测小学四年级语文试题
- 雨课堂学堂在线学堂云《政治学基础(暨南)》单元测试考核答案
评论
0/150
提交评论