用户交互Scanner类
-
基本语法
Scanner s = new Scanner(System.in);
-
通过Scanner类的next()与nextline()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasnextLine()判断是否还有输入的数据。
next()与nextLine()
-
public class demo01 { public static void main(String[] args) { System.out.println("请输入:");//输入Hello world! Scanner scanner = new Scanner(System.in); if(scanner.hasNext()){ String str = scanner.next(); System.out.println("您输入的是:"+str);//Hello } //凡是i/o流的类使用完后都需要关闭,不然会一直占用内存 scanner.close(); } }
可以发现Scnner类的next()函数在输入Hello world!的时候却只输出Hello。
-
public class demo02 { public static void main(String[] args) { System.out.println("请输入:");//输入Hello world! Scanner scanner = new Scanner(System.in); if(scanner.hasNextLine()){ String str = scanner.nextLine(); System.out.println("您输入的是:"+str);//Hello world! } scanner.close(); } }
可以发现Scnner类的nextLine()函数在输入Hello world!输出Hello world!。
- next()
- 一定要读取到有效字符后才可以结束输入。
- 对输入有效字符前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串。
- nextLine()
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车前的所以字符。
- 可以获得空白。
scanner进阶
public class demo03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int i = 0; float f = 0.0f; //输入1.1 if(scanner.hasNextInt()){ i = scanner.nextInt(); System.out.println("您输入的为整数:"+i); }else System.out.println("您输入的不为整数!");//您输入的不为整数! if(scanner.hasNextFloat()){ f = scanner.nextFloat(); System.out.println("您输入的小数为:"+f); }else System.out.println("您输入的不为小数");//您输入的小数为:1.1 } }
scanner与判断语句结合。
public class demo04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int count = 0; Double sum = 0.0; while(scanner.hasNextDouble()){ double v = scanner.nextDouble(); count++; sum += v; System.out.println("您输入的第"+count+"个数为:"+v); } System.out.println("您输入的数的和为:"+sum); } }
scanner与循环语句的结合
- next()