![](/img/trans.png)
[英]HTML Java Form input field Restrict to only allow international uk numbers e.g +447655123456
[英]how to restrict input only as numbers in java
我编写计算器只是为了好玩。 我解决了大部分错误,除了一个错误,如何将输入限制为数字。 在执行程序时,我意识到如果我输入一个字母字符而不是数字,它会给我一个错误。 谁能帮我制作一个循环,以便如果输入非数字,循环将继续直到输入数字? 这是计算器的代码:
import java.text.DecimalFormat;
import java.util.Scanner;
class Calculator
{
public static void main(String arg[])
{
try (
Scanner Number$1 = new Scanner(System.in))
{
double Number1;
System.out.println("Enter Number 1");
Number1= Number$1.nextDouble();
try (
Scanner Number$2 = new Scanner(System.in))
{
double Number2;
System.out.println("Enter Number 2");
Number2 = Number$2.nextDouble();
//to make ui better
String a= "The addition of the two numbers is: ";
String b= "The subtraction of the two numbers is: ";
String c= "The multiplication of the two numbers is: ";
String d= "The division of the two numbers is: ";
String Options= "";
try (Scanner scan = new Scanner(System.in)) {
System.out.println("Do You Want To Add, Subtract, Multiply, Divide? ");
System.out.println("a: Add");
System.out.println("b: Subtract");
System.out.println("c: Multiply");
System.out.println("d: Divide");
Options = scan.nextLine();
}
double add= Number1+Number2;
double sub= Number1-Number2;
double multi= Number1*Number2;
double div= Number1/Number2;
if(Options.equals("a"))
{
if(((add*10)%10==0)==true)
{
DecimalFormat format= new DecimalFormat();
format.setDecimalSeparatorAlwaysShown(false);
System.out.println(a+(format.format(add)));
}
if(((add*10)%10==0)==false)
{
System.out.println(a+(add));
}
}
if(Options.equals("b"))
{
if(((sub*10)%10==0)==true)
{
DecimalFormat format= new DecimalFormat();
format.setDecimalSeparatorAlwaysShown(false);
System.out.println(b+(format.format(sub)));
}
if(((sub*10)%10==0)==false)
{
System.out.println(b+(sub));
}
}
if(Options.equals("c"))
{
if(((multi*10)%10==0)==true)
{
DecimalFormat format= new DecimalFormat();
format.setDecimalSeparatorAlwaysShown(false);
System.out.println(c+(format.format(multi)));
}
if(((multi*10)%10==0)==false)
{
System.out.println(c+(multi));
}
}
if(Options.equals("d"))
{
if(((div*10)%10==0)==true)
{
DecimalFormat format= new DecimalFormat();
format.setDecimalSeparatorAlwaysShown(false);
System.out.println(d+(format.format(div)));
}
if(((div*10)%10==0)==false)
{
System.out.println(d+(div));
}
}
}
}
}
}
尝试这个:
double number1;
double number2;
boolean validInput = false;
Scanner scanner = new Scanner(System.in))
while(!validInput){
System.out.println("Enter Number 1");
if(scanner.hasNextDouble()){
validInput = true;
number1 = scanner.nextDouble();
}
}
validInput = false;
while(!validInput){
System.out.println("Enter Number 2");
if(scanner.hasNextDouble()){
validInput = true;
number2 = scanner.nextDouble();
}
}
关于代码风格的几点说明:
让多个扫描仪监听 System.in 通常是不好的做法
变量的命名约定遵循驼峰命名法,因此“number1”不是“Number1”,但这并不是什么大问题。
为了代码的可读性,请考虑添加注释来解释嵌套 if 块内的条件。
祝你编程工作好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.