当前位置: 首页 > 知识库问答 >
问题:

在Scanner.nextInt()之后使用Scanner.nextLine()[复制]

刘意
2023-03-14
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的初学者。我制作了一个类,想输入一个数字和一个字符串,但我认为s=in。nextLine() 忽略此行。如何逐行输入两个值。

共有3个答案

蒋哲
2023-03-14

像这样试试:D

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);
    }
}
高运诚
2023-03-14

而不是

s = in.nextLine();

尝试

in.nextLine();
s = in.nextLine();

对nextInt()的调用仍然会留下一个尾随的换行符。

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

濮君植
2023-03-14

使用扫描仪时。nextInt(),它本身不使用新行(或其他分隔符),因此返回的下一个标记通常是空字符串。因此,您需要使用扫描器跟踪它。nextLine()。您可以放弃结果,而不是将其分配给a:

int a = in.nextInt(); 
in.nextLine();

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

 类似资料:
  • 问题内容: 我的教授倾向于执行以下操作来从用户那里获得一个号码: 与简单地做相比有什么好处? 包含以下内容: 正如我所看到的,除了其他的轨迹外,还调用Integer.parseInt()本身。简单地做会带来显着的性能提升吗?另一方面是否有任何弊端? 扫描包含大量数据而不是用户输入的文件时怎么样? 问题答案: 有2个观察结果: 在新行字符后面使用叶子。因此,如果在之后调用,则会读取换行符,而不是实际

  • 问题内容: 我必须获得一个字符串输入和一个整数输入,但是输入的顺序应该是整数首先出现,然后应该要求用户输入字符串 上面的代码工作正常,但是如果我先接受整数输入,如下面的代码 然后抛出java.lang.ArrayIndexOutOfBoundsException。 这是我的源文件的完整代码: 公共类StringSwap { } 请指出我在这里做错了什么。 问题答案: 问题是整数后面的字符。当您调用

  • 我必须得到一个字符串输入和一个整数输入,但输入的顺序应该是整数在先,然后要求用户输入字符串 上面的代码工作得很好,但是如果我首先输入一个整数,就像下面的代码 然后抛出java.lang.ArrayIndexOutOfBoundsException。 下面是我源文件的完整代码: 公共类StringSwap{ } 请指出我在这里做错了什么。

  • 问题内容: 尝试使用中的方法时遇到麻烦。 这是我尝试过的: 示例1:此示例按预期方式工作。该行;等待输入,然后再继续。 产生输出: 示例2:此示例无法正常工作。本示例使用while循环以及结构允许用户选择要执行的操作。一旦程序到达;,它就不会等待输入,而是执行该行;。 产生输出: 这使得不可能输入句子。 为什么示例不能按预期工作?唯一之间的区别。和是那个 具有循环和结构。我不明白为什么这会影响的行

  • 我有一个扫描器,它由我的类中的调用。 循环的工作方式是,如果选择了“n”或“n”,它将再次调用构造函数。但是,由于这两种类型是字符串数据类型,构造函数首先调用一个名称,因此它要么将“n”或“n”识别为名称,要么跳过整个名称。我怎么解决这个? 下面的Player类 下面是以作为第一个名称输入的示例输出: 如您所见,问题出现在之后。

  • 这个程序的目标是选择要绘制的对象类型,即:线条、矩形、o vals,然后输入参数,即如果我要绘制的是矩形,输入将是,并在JFrame上绘制具有这些尺寸的矩形。然后输入“end”,等待对象输入和绘制就结束了。