本文共 1355 字,大约阅读时间需要 4 分钟。
Scanner的构造方法:
Scanner(InputStream source)
System类下有一个静态的字段:
public static final InputStream in;
这是标准的输入流,对应着键盘录入。
代码:
package com.heima.scanner;import java.util.Scanner;public class Demo1_Scanner { public static void main(String[] args) { Scanner in = new Scanner(System.in); //键盘录入 if(in.hasNextInt()) { int i = in.nextInt(); //键盘录入整数存储在i中 System.out.println(i); }else { System.out.println("输入类型错误"); } }}
package com.heima.scanner;import java.util.Scanner;public class Demo2_Scanner { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入一个整数:"); int i = in.nextInt(); System.out.println("请输入一个字符串:"); String str = in.nextLine(); System.out.println("i = " + i + ", str = " + str); }}
输出:
请输入一个整数:12请输入一个字符串:i = 12, str =
分析:
nextInt()是键盘录入整数的方法,当我们录入10并回车时,其实在键盘上录入的是10\r\n。nextInt()只获取10就结束了。nextLine()是键盘录入字符串的方法,会获取一整行,遇到\r\n就结束了。所以nextLine()什么也没获取到就结束了。其实,next()、nextInt()、nextDouble()等与nextLine()连用时都会存在这个问题。
解决办法:
1、所有的输入都使用nextLine(),然后分别转化成它们本来的类型2、如果nextLine()获取的是不带空格的字符串,使用next()即可。next()输入在得到有效字符前会忽视掉空格和回车。3、如果获得的字符串有空格,那么在上一次的nextInt()之后再加一个nextLine()即可。
转载地址:http://nkjq.baihongyu.com/