java中使用nextLine(); 没有输入就自动跳过的问题?

我昨天在做题(最长上升子序列)的过程中遇到一个问题,第一个数N表示后面有多少组测试数据,但是当我输入N之后,for循环里的nextLine();并没有让我输入,就跳过并且输出了

【问题分析】

in.nextLine()不能放在in.nextInt()后面,否则in.nextLine()会读入“\n”,但“\n”并不会称为返回的字符

举个例子:

import java.util.*;
public class static void main(String[] args){
    Scanner in = new Scanner(System.in);
    int N = in.nextInt();
    for(int i = 0;i < N;i++){
    String str = in.nextLine(); 
    }
}

假如输入N为1,摁下回车,程序并不会让你继续输入str,而是直接结束了

【解决方案】

最好的解决办法,在nextInt()和nextLine()之间放一个in.nextLine()来接收这个“\n”

import java.util.*;
public class static void main(String[] args){
    Scanner in = new Scanner(System.in);
    int N = in.nextInt();
    in.nextLine();
    for(int i = 0;i < N;i++){
    String str = in.nextLine(); 
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

3 条评论
登录 后参与评论

相关文章

来自专栏猿人谷

String.valueOf()

1. 由 基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String....

1687
来自专栏程序猿DD

Spring Boot使用@Async实现异步调用:自定义线程池

在之前的Spring Boot基础教程系列中,已经通过《Spring Boot中使用@Async实现异步调用》一文介绍过如何使用 @Async注解来实现异步调用...

4258
来自专栏10km的专栏

jface databinding: 创建readonly(只读)可观察对象(observable)

java与C++有一点不同:C++有const关键字,使用const关键字,用于指定一个参数、成员变量或函数是只读不可修改的,通过const参数让对象成为rea...

1895
来自专栏一名合格java开发的自我修养

Strom序列化机制

  Storm 中的 tuple可以包含任何类型的对象。由于Storm 是一个分布式系统,所以在不同的任务之间传递消息时Storm必须知道怎样序列化、反序列化消...

632
来自专栏noteless

JavaSE之Long 详解 Long的方法简介以及用法

java.lang.Long.valueOf(String, int)是借助于parseLong进行转换

1262
来自专栏区块链入门

【易错概念】Solidity语法的重载,继承的定义

以太坊智能合约语言Solitidy是一种面向对象的语言,本文结合面向对象语言的特性,讲清楚Solitidy语言的多态(Polymorphism)(重写,重载),...

1073
来自专栏用户2442861的专栏

为什么很多类甚者底层源码要implements Serializable ?

在碰到异常类RuntimeException时,发现Throwable实现了 Serializable,还有我们平进的javabean一般也要实现Seriali...

331
来自专栏IT大咖说

深入学习 Java 序列化

1824
来自专栏noteless

[三]基础数据类型之Integer详解

853
来自专栏芋道源码1024

Java 函数式编程和 lambda 表达式

函数式编程更多时候是一种编程的思维方式,是种方法论。函数式与命令式编程的区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉代码要怎么做。说白了,...

481

扫码关注云+社区