【问题标题】:Return a string in boolean method以布尔方法返回一个字符串
【发布时间】:2020-04-18 02:13:41
【问题描述】:

我有一个如下的布尔方法

public boolean validID(String personalNumber) { .... }

我想打印出一个字符串“有效”或“无效”,具体取决于布尔值是真还是假。

问题是如何在布尔方法中打印出字符串。即使 if 语句为真,下面的代码也总是返回假。

 if (sum % 10 == 0) {
        return Boolean.parseBoolean("is valid");
    } else {
        return false;
    }

【问题讨论】:

  • 你不能。而是在另一个地方使用对这个布尔返回方法的调用,并根据结果(truefalse)在那里打印它是否有效
  • 看起来你的第一个返回语句应该只是return true
  • 你的方法返回boolean。如果你想返回一个字符串,首先改变它的返回类型。
  • 您混淆了returningprinting。返回一个值允许任何调用者对返回的值做任何事情。一个调用者可以使用布尔结果来打印一条消息“有效”或“无效”。另一个调用者可以使用它来启动一个进程。第三个可以使用它来显示图形通知。关键是:caller 将使用返回的布尔值来做它想做的任何事情。调用该方法,然后测试它是否返回 true,如果是,则打印一条消息。不要通过此方法打印或返回消息。
  • 您要打印还是退回?您的问题令人困惑

标签: java string boolean


【解决方案1】:

你只有两个选择:

  • boolean 方法:

    public boolean validID(String personalNumber) { 
        // ... code to compute 'sum'
        return sum % 10 == 0;
    }
    
  • String 方法:

    public String validID(String personalNumber) { 
        // ... code to compute 'sum'
        if (sum % 10 == 0) {
            return personalNumber + " is valid";
        } else {
            return personalNumber + " is not valid";
        }
    }
    

或者结合两者的选择,String 一个调用boolean 一个:

public boolean isValidId(String personalNumber) { 
    // ... code to compute 'sum'
    return sum % 10 == 0;
}

public String validID(String personalNumber) { 
    if (isValidId(personalNumber)) {
        return personalNumber + " is valid";
    } else {
        return personalNumber + " is not valid";
    }
}

我建议拿boolean一个,更好的是让方法找到personalNumber的有效性,让调用它的代码处理结果打印一条消息,因为你可能这个方法再次,这一次您将需要布尔结果以不同方式处理它

String id = "fs6d7f6sd";
if(this.validID(id))
    System.out.println("ID is valid");
else
    System.out.println("ID is not valid");

【讨论】:

  • 还有第三种选择,您的答案中的第一种方法调用第二种方法。
【解决方案2】:

我推荐使用 bean Result。 检查我的代码。

class Result {
    private boolean value;
    private String message;

    public Result(boolean value, String message) {
        this.value = value;
        this.message = message; 
    }
    // getter & setter
}

public Result validID(String number) { 
    // ... code to compute 'sum'
    return sum % 10 == 0 ? 
        new Result(true, "valid") : 
        new Result(false, "invalid");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    相关资源
    最近更新 更多