Java---- 从控制台读入数据
1.read()
API 从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。
返回一个整型字节数据,如果到达流的末尾,则返回 -1。
重复调用 System.in.read() 实际上是在遍历该流中的每一个字节数据。最常见的流是键盘输入流。
1 import java.io.IOException;
2 public class in_out {
3 public static void main (String[]args)throws IOException
4 //throws IOException表示有抛出IOException的可能性
5 //且只要有异常抛出,就必须显式的处理(try...catch)或抛出
6 //,如果不是显式的抛出(调用方法本身要抛出),那么可以不必Throws
7 {
8 int i=0;
9 while (i!=-1){
10 i = System.in.read();
11 System.out.println(i);
12 }
14 }
15 }
结果 (输入 ABCD)
因为返回的是 0~255 的整数,所以返回的是相应字符的 ASCII 码值。
若将第 11 行改为 System.out.println((char)i); , 则输出的是 ABCD
另外,read() 只读一个字符;
这里解释一下末尾输出的 13 和 10
13 和 10 是读取的键盘的回车,我们在键盘上按一下回车键,实际上读取到的是两个字符,即 “\r”(13)和 “\n”(10)。
字符 “\r” 表示回车,即光标回到当前行的行首而不换行;字符 “\n” 表示换行,即光标移到当前行的下一行行首。
java.util.Scanner
使用它的 Scanner(InputStream source) 构造方法,可以传入系统的输入流 System.in 而从控制台中读取数据。
当通过 new Scanner(System.in) 创建一个 Scanner,控制台会一直等待输入,直到敲回车键结束,
把所输入的内容传给 Scanner,作为扫描对象。若要获取输入的内容,只需要调用 Scanner 的 nextLine() 方法即可。
1 import java.util.Scanner;;
2 public class in_out {
3 public static void main(String[]args){
4 //读入输入直到回车
5 Scanner sc = new Scanner(System.in);
6 System.out.println(sc.nextLine());
7 }
8 }
1.nextLine()
API 此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。
意思就是读出当前下标的一行,对它来讲每行就是他的分隔符。
2.next()
查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式
匹配的输入信息,
Scanner 默认使用空格作为分割符来分隔文本,但允许你指定新的分隔符。
nextLine() 可以接收空格或者 tab 键,其输入应该以 enter 键结束。
1 //使用默认分割符,即空格
2 import java.util.Scanner;
3 public class in_out{
4 public static void main (String []args){
5 Scanner sc = new Scanner("aa bb cc,dd");
7 while (sc.hasNext()){
8 System.out.println(sc.next());
9 }
10 }
11 }
1 //自定义分割符,原分割符失效
2 import java.util.Scanner;
3 public class in_out{
4 public static void main (String []args){
5 Scanner sc = new Scanner("aa bb cc,dd");
6 sc.useDelimiter(",");
7 while (sc.hasNext()){
8 System.out.println(sc.next());
9 }
10 }
11 }
输出对比:



浙公网安备 33010602011771号