输入语句
关于控制台的输入,主要介绍三种方法。
1.BufferedReader
传统、繁琐、效率低
- 每次调用InputStreamReader()中的一个read()方法
会导致从底层输入流读取一个或多个字节 - InputStreamReader 是字节流通向字符流的桥梁
- 字节——>字符 可提前从底层流读取更多字节,使其超过满足当前读取操作所需的字节,以提高效率
- 为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader
1
2BufferedReader 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);
需要输入多行数据:
1
2
3
4while(sc.hasNextInt()){...} while(sc.hasNext()){...}
读入一个字符串:
1
2String str = sc.next();
读入一整行数据:
1
2
3String lineString = sc.nextLine();
读入一个整数:
1
2int intNumber = sc.nextInt();
输入案例:
输入数据有多组,每组占2行,第一行为一个整数N,指示第二行包含N个实数
1
2
3
4
5
6
7
8
9
10Scanner 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后
- 控制台会一直等待输入,直到敲回车键结束
- 把所有输入的内容传给Scanner,作为扫描对象。
- 如果要获取输入的内容,则只需要调用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( )
1
2BufferedReader 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()方法中,会把类的所有属性(成员变量)全部合成一个字符串返回回来
本人原创(借鉴学习其他朋友的博文写成,如有问题,请指教)
最后
以上就是舒心荔枝最近收集整理的关于JAVA控制台的输入输出语句的全部内容,更多相关JAVA控制台内容请搜索靠谱客的其他文章。
发表评论 取消回复