题解 | #字符串排序#

字符串排序

http://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723

看似简单的题目,但是会犯上一个小失误,即输出少一个数据,并且是最后一次输入的字符串,而排序后的第一位是空:

import java.util.*;

public class Main {
    public static void main(String[] args) 
    {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String[] array = new String[n];
        for (int i = 0; i < n; i++) {
            array[i] = in.nextLine();
        }
        Arrays.sort(array);
        for (String str : array) {
            System.out.println(str);
        }
    }
}

这是因为之前输入一个nextInt后,输入的回车会被nextLine给接受,所以排序会少最后输入的字符串。

更改方案:可以将nextLine改为next,后者不接受空格回车:

import java.util.*;

public class Main {
    public static void main(String[] args) 
    {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String[] array = new String[n];
        for (int i = 0; i < n; i++) {
            array[i] = in.next();
        }
        Arrays.sort(array);
        for (String str : array) {
            System.out.println(str);
        }
    }
}
全部评论
是的,自测时有这个问题在
1 回复 分享
发布于 2022-05-20 17:05
这两个语句都是用来从控制台接受字符串的,区别是: next(); 这个函数会扫描从有效字符起到空格,Tab,回车等结束字符之间的内容并作为String返回。 nextLine(); 这个函数会直接输出你输入的内容,即使你什么都没输入直接回车他也会输出。 next();什么都不输入直接敲回车不会返回,而nextLine()即使不输入东西直接敲回车也会返回。 当你前面定义了.nextInt();等函数时,nextLine()会把nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下一条语句执行。
11 回复 分享
发布于 2023-07-27 20:38 上海
这个题描述的就不对。题目要求是按字典排序,但答案是按照ASCII顺序。Arrays.sort(array)排完序之后,大写字母永远在小写字母之前
4 回复 分享
发布于 2023-05-10 13:21 浙江
这道题如果用nextLine()接收数据,请在接收n之后单独立行写一句in.nextLine();才能抵消Line和非Line输入的错位
2 回复 分享
发布于 2023-02-27 11:57 广东
都用nextLine不就好了么
1 回复 分享
发布于 2022-08-24 10:50 贵州
搞了半天发现错误
点赞 回复 分享
发布于 2022-06-08 22:32
我也是
点赞 回复 分享
发布于 2022-06-19 21:24
为什么会这样?
点赞 回复 分享
发布于 2022-11-06 17:34 北京
直接用while循环,不用for循环呢?
点赞 回复 分享
发布于 2022-11-12 17:44 湖南
感谢,帮我找到了这个问题的解决方案。
点赞 回复 分享
发布于 2023-03-13 17:42 陕西
牛逼,插眼
点赞 回复 分享
发布于 2023-07-21 21:13 江西
细节!!!
点赞 回复 分享
发布于 03-27 11:03 重庆
不是只能使用默认scanner包下的函数吗?怎么是util.*
点赞 回复 分享
发布于 06-07 16:13 黑龙江

相关推荐

威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
201 23 评论
分享
牛客网
牛客企业服务