用Scanner类获取用户的输入
注:以下所述作为笔记以供复阅
或有谬误,需自察
我们可以用Scanner类来获取用户的输入,简单用nextInt()、nextFloat()、nextDouble
分别来获取int、float和double类型的输入,用next()或nextLine()来获取字符串类型的输入。但要注意next系列方法的连用,以及next()与nextLine()的异同。
package tools;
import java.util.Scanner;
public class InputTypes {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*多行注释快捷键:
* 选中你要加注释的区域,用ctrl+/ 会加上//注释
* 重复按一下就会去掉加上的注释
* */
*
/*
* 运用Scanner类
* */
Scanner scan =new Scanner(System.in);
System.out.println("输入一个整数:");
int num1 = scan.nextInt();
System.out.println("输入一个浮点数");
float num2 = scan.nextFloat();
/* next系列方法的连用:
* nextInt()或者nextFloat()或next()在读取数字时,不会将转义字符读进去,因此换行字符就留在了输入缓冲区上,
而nextLine()方法是以换行字符为结束符将数据与结束符读入。所以就会出现在nextInt()或nextFloat()方法后的nextLine
读入的时空字符串。
解决方法:
(1)在nextInt()和nextLine()中间加上一个nextLine()
(2)都使用nextLine()进行读取,在读取整数时采用integer类的parseInt()方法转换成整数
*/
scan.nextLine();
System.out.println("输入一个字符串:");
String str1 = scan.nextLine();
System.out.println("前三个的输出:"+num1+"\n"+num2+"\n"+str1);
/* next()与nextLine()的异同:
* next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,
* next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
* next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。
*
* nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
* */
// System.out.println("读取多行字符串(使用nextLine()):");
// while(scan.hasNext()) {
// System.out.println(scan.nextLine());
// }
//
// System.out.println("读取多行字符串(使用next()):");
// while(scan.hasNext()) {
// System.out.println(scan.next());
// }
}
}