首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Scanner.nextInt()之后使用Scanner.nextLine()

在Scanner.nextInt()之后使用Scanner.nextLine()
EN

Stack Overflow用户
提问于 2012-07-13 14:12:19
回答 4查看 1.6K关注 0票数 2
代码语言:javascript
复制
import java.util.Scanner;

public class Hello {

    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        int a;
        String s;

        System.out.println("Enter int : ");
        a = in.nextInt();
        System.out.println("Enter String : ");

        s = in.nextLine();
        System.out.println("int : "+a+"\nString : "+s);
    }
}

我完全是一个Java的初学者。我创建了Hello类,并希望输入一个数字和一个字符串,但我认为s = in.nextLine();这一行被忽略了。如何逐行输入两个值?

EN

回答 4

Stack Overflow用户

发布于 2012-07-13 14:25:25

当您使用Scanner.nextInt()时,它不使用新行(或其他分隔符)本身,因此返回的下一个标记通常是一个空字符串。因此,您需要在它后面加上一个Scanner.nextLine()。您可以丢弃结果,而不是将其赋值给a

代码语言:javascript
复制
int a = in.nextInt(); 
in.nextLine();

出于这个原因,我建议始终使用nextLine (或BufferedReader.readLine()),并在使用Integer.parseInt()之后进行解析。

票数 4
EN

Stack Overflow用户

发布于 2012-07-13 14:17:31

而不是

代码语言:javascript
复制
s = in.nextLine();

试一试

代码语言:javascript
复制
in.nextLine();
s = in.nextLine();

对nextInt()的调用仍然会在后面留下一个换行符。

调用in.nextLine()实际上是转到下一行。然后in.nextLine会得到你的实际结果。

票数 1
EN

Stack Overflow用户

发布于 2012-07-13 14:30:13

像这样试试:D

代码语言:javascript
复制
import java.util.Scanner;

public class Hello {
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        int a;
        String s = null;
        System.out.print("Enter int: ");
        a = in.nextInt();

        while ((s = in.nextLine()).trim().isEmpty()) {
            System.out.print("Enter String: ");
        }

        System.out.println("int : " + a + "\nString : " + s);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11465066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档