使用Scanner或BufferedReader实现
1. 使用Scanner
下面一个例子是,利用 Scanner 实现从键盘读入integer或float 型数据
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
//使用Scanner类定义对象
Scanner in = new Scanner(System.in);
System.out.println("please input a float number");
//接收float型数据
float a = in.nextFloat();
System.out.println(a);
System.out.println("please input a integer number");
//接收int型数据
int b = in.nextInt();
System.out.println(b);
System.out.println("please input a String ");
//接收字符串型数据
String c = in.nextLine();
System.out.println(c);
}
}
在Java SE 6及以上,可以使用Scanner类取得用户的输入,Scanner类位于java.util包中,如果你要使用Scanner取得用户输入的话,要加上 import java.util.Scanner;这条语句import的功能是告诉编译器,你将使用java.util包中的Scanner类。
new是创建一个对象,程序中new的意思是创建了一个Scanner类的对象scan。但是在创建Scanner类的对象时,需要用System.in 作为它的参数,也可以将Scanner看作是System.in对象的支持者,System.in取得用户输入的内容后,交给Scanner来作一些处理。
Scanner类中提供了多个方法next():取得一个字符串;
- nextLine() :获取一行字符串;
- nextInt():将取得的字符串转换成int类型的整数;
- nextFloat():将取得的字符串转换成float型;
- nextBoolean():将取得的字符串转换成boolean型;
用Scanner获得用户的输入非常的方便,但是Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键。当按下这其中的任一键时,Scanner就会返回下一个输入,所以用nextLine()方法;
Scanner类中next()与nextLine()方法的区别:next()与nextLine()区别很明确,next() 方法遇见第一个有效字符(不是空格和换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,也就是说使用next()方法获得的是不含空格和换行符的单个字符串。而使用nextLine()时,则可以扫描到一行内容并作为一个字符串而被获取到。
当然还有其他方法获取字符串,看下面这个你熟悉不熟悉
2. 使用BufferedReader
先看一个例子:利用 BufferedReader实现从键盘读入字符串并写进文件test.txt中。
import java.io .*;
public class Test {
public static void main(String[] args) throws IOException {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter buff = new BufferedWriter(new FileWriter("test.txt"));
String str = buf.readLine();
while (!str.equals("exit")) {
buff.write(str);
buff.newLine();
str = buf.readLine();
}
buf.close();
buff.close();
}
}
其实在Java SE 1.4及以前的版本中,尚没有提供Scanner方法,我们获得输入时也是使用BufferReader的.
BufferedReader类位于java.io包中,所以要使用这个类,就要引入java.io这个包:import java.io.BufferedReader。
使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常(Exception).
使用BufferedReader来取得输入,理解起来要复杂得多。但是使用这个方法是固定的,每次使用前先如法炮制就可以了。
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
String text = buffer.readLine();
readLine()方法会返回用户在按下Enter键之前的所有字符输入,不包括最后按下的Enter返回字符。
获取字符串的方法
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestBufferedReader {
public static void main(String[] args) throws IOException {
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一串字符串");
String test = buffer.readLine();
System.out.println("您输入的字符串是:" + test);
}
}
3. 用Scanner获取数组
3.1 用Scanner.next()
限制数组个数,可以自己设置字符串长度。
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
System.out.println("请输入五个数:");
Scanner in = new Scanner(System.in);
int[] b=new int[5];
for(int i=0;i<b.length;i++){
b[i]=in.nextInt();
System.out.println(""第"+(i+1)+"个数是"+b[i]");
}
}
就是每获取一个数,就用数组把它储存起来。
3.2 用Scanner.nextLine()
不限制数组个数。
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
System.out.println("请输入几个数,用空格分开");
Scanner scan = new Scanner(System.in);
String str;
str = scan.nextLine();
String[] arr = str.split(" ");
int[] b = new int[arr.length];
for(int j = 0; j<b.length;j++) {
b[j] = Integer.parseInt(arr[j]);
System.out.println("第"+(j+1)+"个数是"+b[j]);
}
}
}
通过字符串的形式,再转化成int[ ] 数组。获取一行,然后去掉空格,成了一个字符串,再把字符串分成若干个数。依次存入数组中。
其实这个用 BufferedReader 也可以实现,这里就不写出了。