在刷这入门题的时候,想不明白为什么明明代码在本地运行的好好的,为什么上测试之后一堆RE
于是决定下载一下测试点数据检查一下。
看了两次的测试点数据,发现了一个规律:
然后发现解题区域并无Java
语言的答案,在看了几个CPP的答案之后,我发现了事情的原因。
由于Java语言中Scanner类的next()方法与nextLine()方法区别甚大,第一次我的输入功能的代码为:
Scanner in = new Scanner(System.in);
int num = Integer.valueOf(in.next());
String numbersStr = in.nextLine();
这里的in.nextLine()为读取一行,而在测试的时候,如果数字过多,会分行输入,所以并不能直接输入一行。 而数字小的时候,的确只有一行,这该怎么做呢?
使用Scanner的next()方法的特性,遇到空白字符则停止扫描
我们可以这样改进:
Scanner in = new Scanner(System.in);
int num = Integer.valueOf(in.next());
int[] nums = new int[num];
for(int i=0;i<num;i++) nums[i] = in.next();
//由于使用了next()方法,所以这就实现了循环用读取使用了任意空白字符(包括回车)分开的字符
//第一个数字为num(列车车厢个数)
//剩下的所有数字为列车车厢编号,循环存入int数组即可