gpt4 book ai didi

java - 将 double 值转换为 boolean 值时出现问题

转载 作者:行者123 更新时间:2023-11-30 05:45:50 25 4
gpt4 key购买 nike

我正在我的 Java 类中开发一个项目,该项目使用多个类以及 GUI(不确定该信息是否相关)。不过,我和我的小组伙伴遇到了一个问题。我们有一个 Validator 类,它应该验证“SSN”,但我们不断收到错误:

java:146: error: incompatible types: double cannot be converted to boolean
if(Validator.isValidSSN(jTextFieldEmpSSN)){

现在显然 java:146 就是这条线。每个类的代码是:

employeeUI 类(显示错误的类):

private void jButtonEnterActionPerformed(java.awt.event.ActionEvent evt) 
{
Employee e=new Employee();

if(Validator.isValidName(jTextFieldEmpFirst)){
if(Validator.isValidName(jTextFieldEmpLast)){
if(Validator.isValidEmail(jTextFieldEmpEmail)){
if(Validator.isValidSSN(jTextFieldEmpSSN)){
e.setFirstName(jTextFieldEmpFirst.getText());
e.setLastName(jTextFieldEmpLast.getText());
e.setEmailAdd(jTextFieldEmpEmail.getText());
e.setSSN(Integer.parseInt(jTextFieldEmpSSN.getText()));
}}}}

isValidSSN 的 Validator 类是:

public static double isValidSSN(JTextField textfield)
{
double number = 0;
boolean inRange = false;
while(!inRange)
{
number = Double.parseDouble(textfield.getText());
if (number >= 100000000 && number <= 999999999)
{
inRange = true;

} else {}
}

return number;
}

我们已经绞尽脑汁思考如何解决这个问题有一段时间了,但最终却不知所措。我们错过了什么吗?我们将不胜感激任何对此的帮助。

最佳答案

如果我问“123-45-6789”是有效的 SSN 吗?”您不会回答“123456789.0”,对吧?您会回答我"is"或“否”。通过返回 double 你的方法正在执行前者。它用一个数字来响应,而不是问题的答案。

一个好的经验法则是,以 ishas 开头的方法应该返回 boolean。 “这是有效的 SSN 吗?”是一个是/否问题,因此 isValidSSN 应该返回相当于是/否的编程。

public static boolean isValidSSN(JTextField textfield)

这里还有一些其他设计点:

  • 循环不是必需的。 SSN 要么有效,要么无效。

  • 文本字段本身并不是 SSN。它包含一些文本,该文本就是 SSN。与其获取文本字段并使用 getText() 查找字段中的文本,不如让 isValidSSN 直接获取文本。让调用者从文本字段中提取文本。

    从更广泛的角度来说,这称为 single responsibility principle 。理想情况下,每个方法都应该只做一件事。

结果:

public static boolean isValidSSN(String ssn) {
double number = Double.parseDouble(ssn);

if (number >= 100000000 && number <= 999999999) {
return true;
}
else {
return false;
}
}
<小时/>

附注如果我不提,肯定有人会评论说 ifelse block 是不必要的;可以直接返回if结果。他们是对的,尽管我认为这是一个有点高级的技巧。它看起来像这样:

public static boolean isValidSSN(String ssn) {
double number = Double.parseDouble(ssn);
return number >= 100000000 && number <= 999999999;
}

关于java - 将 double 值转换为 boolean 值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54848299/

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