Java程序开发过程中需要从键盘获取输入值,但J没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数,这里给出一些介绍
一.常用输入输出类包介绍:
控制台输入、输出时应用程序的基本功能(控制台程序( Console )读取控制台输入( 也就是所谓的接收用户输入的信息 ):
·System.out提供向“标准输出”写出数据的能力(java.io.PrintStream类型)
·System.in提供从“标准输入”读入数据的能力(java.io.InputStream类型)
·System.err提供向“标准错误输出”写出数据的能力(java.io.PrintStream类型)
PrintStream类的主要方法print()/println()方法被进行了多次重载。
文件输入输出:
·java.io包中定义与数据输入、输出功能有关的类,包括提供文件操作功能的File类。
·创建File类对象:
File f;
f = new File("Test.java");
f = new File("E://ex//","Test.java");
二.具体的代码实现
1.scanner输入
Scanner属于java.util.包所以我们用的时候应先import.
Scanner s=new Scanner(System.in)------接收字符
Stringname=s.nextline(); -------------------接收字符串
intage=s.nexInt(); --------------------------接收int型的
double he=s.nextDouble();--------------------double
2.printf、println输出
格式化输出
System.out.printf();
3.具体实例:
(1)万能的scanner类:
import java.util.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("请输入你的工资:");
floatsalary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
}
这段代码已经表明,Scanner类不管是对于字符串还是整型数据或者float类型的变量,只需做一点小小的改变,就能够实现功能!无疑他是最强大的!
但是,在使用第三种输入方法的时候有一个需要注意的地方,就是nextLine()函数,在io包中有一个和他功能一样的函数我next()函数,他们的功能一样,但是在实现上有什么差别呢,请看下面代码:
public staticvoid main(String [] args) {
Scanner sc = newScanner(System.in);
System.out.println("请输入你的年龄:");
int age =sc.nextInt();
System.out.println("请输入你的姓名:");
String name =sc.nextLine();
System.out.println("请输入你的工资:");
float salary =sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
}
这段代码和上边第三种实现输入方法给出的例子代码区别在于,这段代码先执行nextInt()再执行nextLine(),而第三种方法的例子是先执行nextLine(),再执行nextInt(),当你在运行着两段代码的时候你会发现第三种方法的例子可以实现正常的输入,而这段代码却在输入年龄,敲击enter键后,跳过了输入姓名,直接到了输入工资这里,(可以自己运行代码看看)这是为什么呢?其实,在执行nextInt()函数之后,敲击了enter回车键,回车符会被nextLine()函数吸收,实际上是执行了nextLine()函数吸收了输入的回车符(并不是没有执行nextLine函数),前面讲到和nextLine()功能一样的函数next(),他们的区别就在于:next()函数不会接收回车符和tab,或者空格键等,所以在使用nextLine()函数的时候,要注意敲击的回车符有个被其吸收,导致程序出现BUG!!!
最后小小的总结一下next()和nextLine()的区别:
在java中,next()方法是不接收空格的,在接收到有效数据前,所有的空格或者tab键等输入被忽略,若有有效数据,则遇到这些键退出。nextLine()可以接收空格或者tab键,其输入应该以enter键结束。
(2)从控制台接收一个字符串,然后将其打印出来。我们需要用到BufferedReader类和InputStreamReader类
import java.io.*;
public static void main(String [] args)throws IOException{
BufferedReader br = new BufferedReader(newInputStreamReader(System.in));
String str = null;
System.out.println("Enter yourvalue:");
str =br.readLine();
System.out.println("your value is:"+str);
}
这样我们就能获取我们输入的字符串。
(3)从控制台接收一个字符,然后将其打印出来
import java.io.*;
public static void main(String [] args)throws IOException{
System.out.print("Enter aChar:");
char i =(char) System.in.read();
System.out.println("your char is:"+i);
}
虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能针对一个字符的获取,同时,获取进来的变量的类型只能是char,当我们输入一个数字,希望得到的也是一个整型变量的时候,我们还得修改其中的变量类型,这样就显得比较麻烦。