注册 登录
编程论坛 JAVA论坛

for (int i = 1; i <= x; i++)这个循环中为什么第一次不执行String s = sc.nextLine();

niuzhenkang 发布于 2018-03-14 10:19, 2187 次点击
public class test2 {
    public static void main(String[] args) throws IOException {
        // 创建ArrayList集合对象
        ArrayList<String> array = new ArrayList<String>();
        // 创建集合元素
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入集合中元素个数");
        int x = sc.nextInt();
        for (int i = 1; i <= x; i++) {
            System.out.println("请输入集合中第" + i + "个元素");
            String s = sc.nextLine();
            // 添加到集合中
            array.add(s);
        }
        // 封装目的地
        BufferedWriter fw = new BufferedWriter(new FileWriter("test2.txt") );
        for (String s1 : array) {
            fw.write(s1+"\r\n");
        }
        // 关闭资源
        fw.close();
    }
运行结果:
请输入集合中元素个数
3
请输入集合中第1个元素
请输入集合中第2个元素
nihao
请输入集合中第3个元素
哈哈
3 回复
#2
疯狂的小a2018-03-14 12:14
回复 楼主 niuzhenkang
因为你第一次输入的时候,按了回车,导致,回车被识别成了你第二次要输入的内容,所以第二次就不用输入了,显示了回车,但是你看不见,所以产生了没有输入的错觉,事实上你已经输入了!
#3
疯狂的小a2018-03-14 12:18
回复 楼主 niuzhenkang
解决办法就是,nextint和nextline方法不要用同一个对象就是sc调用。
#4
桃花岛主丶2018-03-20 01:17
版主厉害,前段时间我们老师给我们讲过这个,他说一次他们开发出了这个bug,所有同事都在找这个问题,找了两天.
1