加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 06:01:25 所属栏目:Java 来源:网络整理
导读:作为今天早上我在Uni的 Java课程练习,我不得不写一个小程序来要求用户输入一些细节,然后打印回来.我已经完成了它的写作,但我遇到了一个奇怪的问题. 请参阅以下代码: import java.util.Scanner;public class Scanner_Exercise{ public static void main (Str
作为今天早上我在Uni的 Java课程练习,我不得不写一个小程序来要求用户输入一些细节,然后打印回来.我已经完成了它的写作,但我遇到了一个奇怪的问题.

请参阅以下代码:

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 ID:
2
Account name:
Account balance:

但是,如果我用16和17切换第13行和第14行,如下所示,程序运行正常,并且不会跳过任何行.

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读