gpt4 book ai didi

Java 输入验证

转载 作者:行者123 更新时间:2023-12-01 21:25:27 25 4
gpt4 key购买 nike

所以我正在使用一个程序,该程序应该包含用于异常处理的 try-catch block 。我不知道如何编写一个简单的 if 语句 来通过 Scanner 检查用户的输入,以确保它是一个 double 值,而不是一个字母或一个字符,以便如果是,程序将捕获它,显示错误消息,并告诉用户重新输入另一个值,直到输入合适的输入。我正在寻找的是一个简单的 if(_width equals a letter/character) then return false 以及一条错误消息,与我已经存在的 if 语句一起检查输入是否大于零。

我当前的代码如下:

      public class Rectangle {

//two double data fields width and height, default values are 1 for both.
private double width = 1;
private double height = 1;
private String errorMessage = "";

//no-arg constructor creates default rectangle
public Rectangle() {
}

//fpzc, called by another program with a statement like Rectangle rec = new Rectangle(#, #);
public Rectangle (double _width, double _height) throws Exception {
setWidth(_width);
setHeight(_height);
}

//get functions
public double getArea(){
return (width * height);
}

public double getPerimeter() {
return (2*(width + height));
}

public String getErrorMessage() {
return errorMessage;
}

//set functions
public void setWidth(double _width) throws Exception {
if( !isValidWidth(_width)){
Exception e = new Exception(errorMessage);
throw e;
//System.out.println(errorMessage);
//return false;
}
width = _width;
}

public void setHeight(double _height) throws Exception {
if ( !isValidHeight(_height)){
Exception e = new Exception(errorMessage);
throw e;
//System.out.println(errorMessage);
//return false;
}
height = _height;
}

//isValid methods
public boolean isValidWidth(double _width) {

if(_width > 0){
return true;
}
else {
errorMessage = "Invalid value for width, must be greater than zero";
return false;
}

if ()

}

public boolean isValidHeight(double _height) {

if(_height > 0){
return true;
}
else {
errorMessage = "Invalid value for height, must be greater than zero";
return false;
}


}
}

我的类正在被我正确编写的另一个测试程序调用。任何帮助表示赞赏!谢谢。

最佳答案

也许是这样的:

    String errorMessage = "error";
Scanner in = new Scanner(System.in);
String str = in.nextLine();

try {
Double.parseDouble(str);
}
catch( Exception e ){
System.out.println(errorMessage);
}

或者迭代输入并检查每个字符是否是数字:

    String errorMessage = "error";
Scanner in = new Scanner(System.in);
String str = in.nextLine();
for(int i=0;i<str.length();i++){
char token = str.charAt(i);
if(!Character.isDigit(token) && token!='.' ) {
System.out.println(token + " doesnt work");
break;
}
}

在声明您的扫描仪时,您还可以:

    double num;
String errorMessage = "error";
while(true) {
Scanner in = new Scanner(System.in);
if (in.hasNextDouble()) {
num = in.nextDouble();
System.out.println(num);
break;
}
else System.out.println(errorMessage);
}

关于Java 输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38279385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com