在一个基于Java文本的程序中(没有图形),如何约束用户输入只允许数字输入,请给出一个例子,对于一个单一的数字字段的输入只(有循环,可能吗?)
正常的控制台输入是由用户键入字符,计算机编辑一行并回显给用户看。然后用户按ENTER,整行就被发送到应用程序。
这意味着:
因此,不能限制用户输入非数字的内容。
如果您实际上只是想检查用户输入了一个有效的数字(并阅读它),那么Kevin Anderson的回答说明了如何做到这一点。
如果希望应用程序实际约束输入,则需要在控制台级别关闭行编辑,而在应用程序本身中进行。它很复杂,您需要使用第三方库来完成。有一些线索,什么是一个好的Java,诅咒一样,图书馆终端应用?
下面是一种可能的方法,即使用扫描器
读取输入:
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 ..”。当用户尝试输入下一个将使它成为无效数字的字符时,他将无法输入。 提前致谢。 问题答案: 您可以尝试使用此指令来阻止将任何无效字符输入到输入字段中。( 更新 :这依赖于对模型具有明确知识的指令,这对于可重用性而言并不理想,请参见下面的可