黑马程序员技术交流社区
标题:
请教关于接收键盘录入的方式
[打印本页]
作者:
黑马华
时间:
2013-5-2 08:45
标题:
请教关于接收键盘录入的方式
本帖最后由 黑马华 于 2013-5-3 22:51 编辑
接收键盘录入的方式都有哪些?以及这些方式的优劣。尽量详细点。thanks
作者:
孙政
时间:
2013-5-2 09:24
有两个常用的类BufferedReader和Scanner
1、BufferedReader br= new BufferedReader(new InputStreamReader(System.in));br.readline();//读取一个文本行。
优点:可以一次性的将全部内容读取出来,完成键盘的输入功能。
缺点:要处理IO异常;读取过程理解起来有点点复杂;读取内容后不能直接实例化对象等等。
2、Scanner s =new Scanner(System.in);
拥有next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()等方法接收不同类型。
优点:用Scanner获得用户的输入非常的方便,Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键.当按下这其中的任一键时,Scanner就会返回下一个输入。
缺点:在命令行模式下要输入数据至程序中时,我们可以使用标准输入串对象System.in.但是,我们并不经常直接使用它,因为System.in提供的 read方法每次只能读取一个字节的数据,而我们平时所应用的通常是读取一个字符串或者是一个数字。
作者:
ld5128702
时间:
2013-5-2 10:04
程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这种情况我们就束手无策,请你看以下三种解决方法吧:
以下将列出几种方法:
方法一:从控制台接收一个字符,然后将其打印出来
public static void main(String [] args) throws IOException{
System.out.print(“Enter a Char:”);
char i = (char) System.in.read();
System.out.println(“your char is :”+i);
}
}
虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能针对一个字符的获取,同时,获取进来的变量的类型只能是char,当我们输入一个数字,希望得到的也是一个整型变量的时候,我们还得修改其中的变量类型,这样就显得比较麻烦。
方法二:从控制台接收一个字符串,然后将其打印出来。在这个题目中,我们需要用到BufferedReader类和InputStreamReader类
public static void main(String [] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
System.out.println(“Enter your value:”);
str = br.readLine();
System.out.println(“your value is :”+str);
}
这样我们就能获取我们输入的字符串。
方法三:这种方法我认为是最简单,最强大的,就是用Scanner类
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入你的姓名:”);
String name = sc.nextLine();
System.out.println(“请输入你的年龄:”);
int age = sc.nextInt();
System.out.println(“请输入你的工资:”);
float salary = sc.nextFloat();
System.out.println(“你的信息如下:”);
System.out.println(“姓名:”+name+“\n”+“年龄:”+age+“\n”+“工资:”+salary);
}
这段代码已经表明,Scanner类不管是对于字符串还是整型数据或者float类型的变量,只需做一点小小的改变,就能够实现功能!无疑他是最强大的!
这是最常用的三种,当然还有其他的,如对话框等等
作者:
蚂蚁搬家
时间:
2013-5-2 10:09
import java.io.*;
public class PrintDemo
{
public static void main(String [] args) throws IOException
{
method_1();
//method_2();
}
//方法一用PrintWriter流实现输出功能;
public static void method_1() throws IOException
{
BufferedReader br = new BufferedRerader(new FileReader(System.in)); //从键盘输入;
PrintWriter pw = new PrintWriter(new FileWriter(System.out), true); //加上true参数后,自带刷新缓冲区功能,不需要在下面调用flush方法;
String line = null;
while((line = br.readLine()) != null)
{
if("over".equals(line)) //over为输入结束标志,遇到over,输入结束,跳出循环;
break;
pw.println(line.toUppercase()); //转换为大写后输出,println自带换行功能;
}
br.close();
pw.close();
}
//方法二用BufferedWriter流实现;
public static void method_2() throws IOException
{
BufferedReader br = new BufferedRerader(new FileReader(System.in));
BufferedWriter bw = new BufferedWriter(new FileWriter(System.out));
String line = null;
while((line = br.readLine()) != null)
{
if("over".equals(line))
break;
bw.write(line.toUppercase()); //转换为大写后输出,不带换行功能;
bw.newLine(); //增加换行符,换行;
bw.flush(); //刷新缓冲区;
}
br.close();
bw.close();
}
}
实际使用中,方法一用的比方法二要多;
作者:
黄玉昆
时间:
2013-5-3 22:36
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2