带布尔值的开关/大小写请求

2022-09-03 16:38:19

我正在尝试创建一个检查登录名(用户名和密码)是否至少有6个字符的方法。

要意识到我创建了此方法。在这种方法中,我创建了布尔值(user和pass),用这些我们可以创建4个不同的布尔链:public void checkLoginData(final String username, final String password)

  • 用户: 真通过: 真
  • 用户: 假通过: 真
  • 用户: 假通过: 假
  • 用户: 真通过: 假

现在我想为他们中的每一个做一个开关/案例请求,但我不知道如何意识到这一点......

如果你问我为什么需要这个开关,我只是认为我需要它,因为我想为这4个布尔链中的每一个做,它确实/显示一些不同的东西。另外,我想以一种性感的java方式做到这一点,而不是用不同“如果”的图桑:P,请帮忙!

下面是该方法的代码:

public void checkLoginData(final String username, final String password){

    boolean user, pass;

    if (username.length() < 6){
        user = false;
    }else {
        user = true;
    }

    if (password.length() < 6){
        pass = false;
    }else {
        pass = true;
    }

    boolean[] logindaten = {user, pass};



}

提前帮忙!

最好的问候野生动物园


答案 1

如果你真的想要一个“性感的java方式”(但这取决于你对它的理解),你可以做这样的事情(需要Java 7):

boolean user, pass;

switch (user + "-" + pass) {
    case "false-false":
        ...
    case "false-true":
        ...
    case "true-false":
        ...
    case "true-true":
        ...
    default:
        throw new RuntimeException(
            "something strange happening here, user: " + user + ",pass: " + pass);
}

但我更喜欢只做2个不同的检查,每个检查都有自己的消息,消息被连接起来进行演示。(不确定这是否可以被认为是“性感的java方式”,更像是一种“解决方法”)


答案 2

你不能切换,只能切换积分类型。要将布尔值转换为 int,您可以对 2 个布尔值使用位掩码,例如:boolean[]

int val = 0;
if (user) val |= 0x1;
if (pass) val |= 0x2;

switch (val) {
case 0: // Both too short
case 1: // User Ok, pass too short
case 2: // User too short, pass ok
case 3: // Both Ok
}