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

Java:试着理解使用Scanner从用户那里获取输入

白志勇
2023-03-14

我有这个项目和一些关于如何做的问题。下一步()。nextInt()。hasNext()和。hasNextInt()是Scanner类工作的一部分。提前感谢您的任何帮助:)

import java.util.Scanner;

public class test {

    public static void main (String[] args) {
    Scanner console = new Scanner(System.in);
    int age;
    System.out.print("Please enter your age: ");
    while (!console.hasNextInt()) {
            System.out.print("Please re-enter your age: ");
            console.next();
        }
    age = console.nextInt();
    System.out.println("Your age is "+age);
    }  
}

1/什么时候!安慰hasNextInt()是第一次执行,为什么它会要求输入?

我一开始以为控制台是空的,所以!console.hasNextInt()是True(空不是int),然后它应该直接从“请输入您的年龄:”转到“请重新输入您的年龄:”,但我的想法似乎是错误的。

在这里,用户需要在打印“请重新输入您的年龄:”之前输入一些内容。

2/console.next()的数据类型总是一个字符串(我尝试使int s=console.next();它给了一个错误),那么为什么这不是一个无限循环?

3/例如,当涉及到console.next();时,我输入21。为什么age的值是21?我想因为console.hasNextInt(),我需要输入另一个数字,这个新数字将是age的值。

共有2个答案

柳修平
2023-03-14

hasNextInt()等待输入字符串,然后告诉您是否可以将其转换为int。考虑到这一点,让我们回顾一下你的问题:

当<代码>!安慰hasNextInt()是第一次执行,为什么会要求输入?

因为它会一直阻塞,直到有来自控制台的输入。

console.next()的数据类型始终是一个String(我尝试使int s=console.next();并给出错误),那么为什么这不是一个无限循环?

因为hasNextInt()在输入可以转换为int返回true,例如"21"

对于一个实例,当涉及到console.next();时,我输入21。为什么age21的值?我想因为console.hasNextInt(),我需要输入另一个数字,那个新数字将是age的值。

调用next()不会等待新的输入,它只会吞下由hasNextInt()测试的输入,这样扫描仪就可以进入下一个。它可能是循环中的第一条语句,具有相同的效果。

张唯
2023-03-14

如果可以使用nextInt()方法将此扫描仪输入中的下一个标记解释为默认基数中的int值,则java.util.Scanner.hasNextInt()方法返回true。

当您以非整数输入开始时,hasNextInt()将为false,您将进入while循环。然后它会提示你重新进入你的年龄。但如果从整数开始,就不会进入循环。你的年龄会被打印出来。

控制台。next()表示它接受下一个输入标记并返回字符串。如果您将代码写为:

String s = null;
while (!console.hasNextInt()) {
    s = console.next();
    System.out.println("You entered an invalid input: " + s);
    System.out.print("Please re-enter your age: ");

}

控制台。next()用于处理非整数输入。现在,如果您输入一个非整数输入two,您将看到控制台。hasNextInt()将为false,并且为console。next()将读取它。

 类似资料:
  • 本文向大家介绍Java使用Scanner类获取用户输入实例详解,包括了Java使用Scanner类获取用户输入实例详解的使用技巧和注意事项,需要的朋友参考一下 创建 Scanner 对象的基本语法: Scanner 类的 next() 方法 运行结果如下,会发现空格后面的英文没有被打印出来: Scanner 类的 nextLine 方法 在以上基础上修改代码: 运行结果,空格后面的英文也可以被打印

  • 问题内容: 我想编写一个程序,获取多个行输入并逐行处理它。为什么没有像Python 3那样的函数? 不允许用户使用换行符()分隔行,它仅打印回第一行。 可以将其存储在变量中,甚至可以将其读取到列表中吗? 问题答案: 在Python 3.x中,Python 2.x的功能已被替换。但是,在两种情况下,您都无法输入多行字符串,为此,您需要从用户行中逐行获取输入,然后使用来进行输入,或者您也可以采用多种行

  • 如果我在Instagram上有粉丝关注我的内容,并且在网上也有注册用户,有没有办法将两者联系起来? 有没有办法发现Instagram上的一个用户是否喜欢一张照片,并看看那个用户是否在我的网站上注册了?

  • 问题内容: 我正在尝试为我的程序创建一个简单的菜单来读取用户输入。这是代码: 这是我得到的例外测试: 我从while循环中删除了第二个命令= Scanner.next(),但是让我仅读取一次用户输入。怎么解决呢? 更新:AddWord方法: 问题答案: 您可以使用

  • 更新:我尝试硬编码密码并让用户输入,它只是跳过了输入部分,如下所示: 因此,服务器似乎自动获得对密码的响应,并像这样进行,执行也像这样: 如有任何帮助,不胜感激。

  • 我们知道,在电报api中有ForceReply选项来获取用户的输入。 电报说: 收到带有此对象的消息后,Telegram客户端将向用户显示一个回复界面(就好像用户已经选择了机器人的消息并点击了“回复”一样)。如果您想创建用户友好的分步界面而不必牺牲隐私模式,这将非常有用。 现在,我使用irazasyed/telegram-bot sdk来制作我的电报机器人。在该包中,要创建一个force_repl