JAVA控制台的输入输出语句

输入语句

关于控制台的输入,主要介绍三种方法。

1.BufferedReader

传统、繁琐、效率低

  • 每次调用InputStreamReader()中的一个read()方法
    会导致从底层输入流读取一个或多个字节
  • InputStreamReader 是字节流通向字符流桥梁
  • 字节——>字符 可提前从底层流读取更多字节,使其超过满足当前读取操作所需的字节,以提高效率
  • 为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

2.System.in

不灵活

System.in.read()一次只读入一个字节数据,而我们通常要取得一个字符串或一组数字

3.Scanner (推荐)

方便、功能强大(JDK5以后)

  • 格式1:Scanner sc = new Scanner(new BufferedInputStream(System.in));
  • 格式2:Scanner sc = new Scanner(System.in);

需要输入多行数据:

  while(sc.hasNextInt()){...}

  while(sc.hasNext()){...}

读入一个字符串:

 String str = sc.next();

读入一整行数据:

String lineString  = sc.nextLine();

读入一个整数:

int intNumber = sc.nextInt();

输入案例:
输入数据有多组,每组占2行,第一行为一个整数N,指示第二行包含N个实数

Scanner sc = new Scanner(System.in);           
while(sc.hasNext()){
	 int n  = sc.nextInt();
	for(int i =0;i<n;i++){
     	double a = sc.nextDouble();
     	......
     	}
}

当通过new Scanner(System.in)创建一个Scanner后

  1. 控制台会一直等待输入,直到敲回车键结束
  2. 把所有输入的内容传给Scanner,作为扫描对象。
  3. 如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。

例如:

public class TestScanner {
public static void main(String[] args) {
System.out.println(“请输入字符串:”);
Scanner s = new Scanner(System.in); //System.in取得用户输入
while(true) {
String lin = s.nextLine(); //用以取得用户输入的字符串
if(lin.equals(“exit”)) break;
System.out.println(">>>" + lin);
}
}
}

拓展:
Scanner取得的输入以space, tab, enter 键为结束符
但是要获取空格、分隔符、回车这些符号怎么办?
方法:BufferedReader的readLine( )

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

//java.io.InputStreamReader继承了Reader类

输出语句

1.System.Out.printIn(" ");

最常用,会把括号里的内容转换为字符串输出到控制台 + 换行

当输出:

基本数据类型 ----- 转换为字符串
对象类型 ---- 自动调用对象的toString()方法

2.System.Out.print(" ");

输出(不换行)

3.System.Out.printf(String format, Object … args);

延续了C语言的输出方式,通过格式化文本参数列表输出

关于toString():

  • toString()是Object类的方法
  • 所有的类都直接/间接的继承Object,因此所有的类都具有Object类的方法toString()
  • toString()作用是将 类——>字符串
  • 一般会在toString()方法中,会把类的所有属性(成员变量)全部合成一个字符串返回回来

本人原创(借鉴学习其他朋友的博文写成,如有问题,请指教)

  • 1
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值