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

在一个基于Java文本的程序(没有图形)中,如何约束用户输入只允许数字输入?

何承
2023-03-14

在一个基于Java文本的程序中(没有图形),如何约束用户输入只允许数字输入,请给出一个例子,对于一个单一的数字字段的输入只(有循环,可能吗?)

共有2个答案

金秦斩
2023-03-14

正常的控制台输入是由用户键入字符,计算机编辑一行并回显给用户看。然后用户按ENTER,整行就被发送到应用程序。

这意味着:

  • 应用程序不参与“行编辑”和回显。
  • 应用程序没有机会在用户键入时拒绝非数字字符。
  • 相反,应用程序读取已经键入的行,并决定它是否可接受。

因此,不能限制用户输入非数字的内容。

如果您实际上只是想检查用户输入了一个有效的数字(并阅读它),那么Kevin Anderson的回答说明了如何做到这一点。

如果希望应用程序实际约束输入,则需要在控制台级别关闭行编辑,而在应用程序本身中进行。它很复杂,您需要使用第三方库来完成。有一些线索,什么是一个好的Java,诅咒一样,图书馆终端应用?

钱照
2023-03-14

下面是一种可能的方法,即使用扫描器读取输入:

Scanner in = new Scanner(System.in);
//...
for(;;) { 
    System.out.println("Please enter a number:");
    if (in.hasNextInt()) {
        break;
    String junk = in.nextLine();
    System.out.println("That's not a number")
}
int n = in.nextInt();

如果您需要接受do大量的数字,那么将此功能构建到一个可重用的方法中,例如:

public int acceptValidInt(Scanner in, String prompt) {
    for(;;) {
        System.out.println(prompt+":");
        if (in.hasNextInt()) {
             break;
        }
        in.nextLine();
        System.out.println("Please enter a valid integer");
    }
    return in.nextInt();

那就这样叫吧:

Scanner in = nw Scanner(System.in);
System.out.println("Enter the dimensions of the rectangle");
int w = acceptValidInt(in, "Width");
int h = acceptValidInt(in, "Height");

还有很多其他的变化是可能的;让你的想象力尽情发挥...

 类似资料:
  • 我有一个输入字段,用户只能在其中输入数字。 JSFIDLE演示 问题是:当我输入一个数字(例如,)然后按点()时,或-浏览器会自动删除输入字段的内容(值设置为“”=空字符串)。但是为什么呢?将类型从更改为似乎可以解决问题。但是,我失去了输入字段的向上/向下箭头功能。有什么想法吗?

  • 问题内容: 有没有一种快速的方法来将HTML文本输入()设置为仅允许数字键击(加’。’)? 问题答案: 注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。 JavaScript 您可以使用以下功能过滤文本的输入值(支持CopyPaste,Drag+Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入标记的位置,不同的键盘布局以及IE9以后的所有浏览器 : 现在,您可以使用

  • 问题内容: 我正在尝试用JavaFX制作数独游戏,但我不知道如何只允许输入一个字母。对此的答案是调用文本字段并执行以下操作: 上面的方法不适用于复制粘贴…或大量其他事情,等等。像这样使用按键监听器似乎是一个AWFUL想法。一定有更好的东西吗?是否存在文本字段的属性,仅允许输入某些字符,或仅允许输入一定数量的字符? 谢谢! 问题答案: 您可以使用来执行此操作。该可以修改都在文本字段做,如果有一个与之

  • 问题内容: 有没有一种快速的方法来将HTML文本输入()设置为仅允许数字键击(加’。’)? 问题答案: 注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。 JavaScript 您可以使用以下功能过滤文本的输入值(支持Copy + Paste,Drag + Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入标记的位置,不同的键盘布局以及IE 9以后的所有浏览器) : 现

  • 问题内容: 我是angularjs的新手。我想知道什么是只允许在文本框中键入有效数字的方法。例如,用户可以键入“ 1.25”,但不能键入“ 1.a”或“ 1 ..”。当用户尝试输入下一个将使它成为无效数字的字符时,他将无法输入。 提前致谢。 问题答案: 您可以尝试使用此指令来阻止将任何无效字符输入到输入字段中。( 更新 :这依赖于对模型具有明确知识的指令,这对于可重用性而言并不理想,请参见下面的可