本文共 2352 字,大约阅读时间需要 7 分钟。
写这篇文章,还是为了自己能理解scanner.next()和scanner.nextline()的区别。
在jdk6中文版帮助文档中找到以下资料:
public nextLine()
因为此方法会继续在输入信息中查找行分隔符,所以如果没有行分隔符,它可能会缓冲所有输入信息,并查找要跳过的行。
- 如果未找到这样的行
- 如果此扫描器已关闭
public next()
true
,在等待要扫描的输入时此方法也可能阻塞。 <>
中的
- 如果没有更多标记可用
- 如果此扫描器已关闭 转载于:
简单的说。
nexitline()方法:结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
next()方法:一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
例子:
1、
Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); System.out.println(string);
2、
Scanner scanner = new Scanner(System.in); String string2 = scanner.next(); System.out.println(string2);
如果在控制台上(Console)分别输入“ hello 2 ”(注意前、后和中间都有空格),第1个例子会输出“ hello 2 ”(注意前、后和中间都有空格),第2个例子会输出“hello”。
因为第2个例子next()方法会认为空格键是结束符!!!
思路:
先创建一个长度为1500的数组arr(因为题目提到操作次数不超过1481,创建数组时,系统会初始化为0),因为New的第一个字母为‘N’,Delete的第一个字母为‘D’,然后使用字符串的函数charAt()取得字符串的第一个字符判断,如果数组值为0则还没有被创建,如果数组值为1则认为以创建。
代码如下:
import java.util.Scanner;public class Main { public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); int[] arr = new int[1500]; int n = scanner.nextInt(); for(int i=0;i