gpt4 book ai didi

java - 为什么这个 Java 程序的第 17 行没有被执行?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:57:33 24 4
gpt4 key购买 nike

作为今天早上我在 Uni 的 Java 类(class)的练习,我必须编写一个小程序来要求用户输入一些详细信息,然后将它们打印回来。我已经写完了,但是我遇到了一个奇怪的问题。

请看下面的代码:

import java.util.Scanner;

public class Scanner_Exercise
{
public static void main (String[] args)
{
Scanner keyboardIn = new Scanner(System.in);

int accountId;
String accountName;
float accountBalance;

System.out.println("Account ID: "); //Line 13
accountId = keyboardIn.nextInt(); //Line 14

System.out.println("Account name: "); //Line 16
accountName = keyboardIn.nextLine(); //Line 17

System.out.println("Account balance: ");
accountBalance = keyboardIn.nextFloat();
}
}

这个程序运行时,第17行(引用注释)被跳过; Account name: 被打印出来,但用户没有机会输入信息,就好像那行代码被注释掉了一样。不会抛出任何错误。输出如下所示:

Account ID:
2
Account name:
Account balance:

但是,如果我将第 13 行和第 14 行换成第 16 行和第 17 行,如下所示,程序运行正常,不会跳过任何行。

System.out.println("Account name: "); //Line 16
accountName = keyboardIn.nextLine(); //Line 17

System.out.println("Account ID: "); //Line 13
accountId = keyboardIn.nextInt(); //Line 14

为什么在第一种情况下会跳过第 17 行,而在第二种情况下不会?

如果有某种相关性,我使用的是 JDK 6 Update 18 和 TextPad 5.3.1。

最佳答案

看看 javadoc应该告诉你原因。

Scanner.nextLine() 跳到当前行的末尾,并返回跳过的内容。由于用户已经输入了一些数据,此函数将返回输入流中剩余的内容。当您切换顺序时,它还没有任何输入,这就是您看到它要求输入的原因。

重要部分:

This method returns the rest of the current line, excluding any line separator at the end.

关于java - 为什么这个 Java 程序的第 17 行没有被执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2415160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com