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 }

输出对比:

posted @ 2020-02-20 18:00  别再闹了  阅读(298)  评论(0)    收藏  举报