首页 > 解决方案 > 如何从一些方法中组合条件

问题描述

嗨,我已经用谷歌搜索过这个问题,但没有找到有用的东西。我有一个代表常规用户区域 UI 的 userUI 对象。我有扩展它的 AdminUI 对象,我想以最正确的方式将 admin 选项添加到该类,而无需对其共享选项进行管理。

试图做到这一点(为了方便起见,像例子一样做......

这是正确的方法还是有更有效和简单的方法。

感觉好像错过了什么……

这是我的代码:

package main.java.draft;

import java.util.Scanner;

//Stackoverflow question
public class SOQ {

    public static void main(String[] args) {

        //How to do combination of some conditions. 
        //Trying on user. 
        UserUI userUI = new UserUI();

        System.out.println("If User regualr just 1-7, if admin 8-12 too");
        Scanner sc = new Scanner (System.in);
        int input = sc.nextInt();
        userUI.manageOptions(input);

        //trying to do that on admin 
        System.out.println("If User regualr just 1-7, if admin 8-12 too");
        AdminUI adminUI = new AdminUI();
        input = sc.nextInt();
        adminUI.manageOptions(input);

        sc.close();         
    }               
}


class UserUI{

    boolean admin = false;

    public void manageOptions(int  input){

        if(input > 0 && input < 8){             
            userMethods(input);
        }

        else if((input > 7 && input < 13) && admin){                
            AdminUI adminUI = new AdminUI();
            adminUI.manageAdminOptions(input);              
        }

        else{               
            System.out.println("Not proper option");
        }           
    }

    public void userMethods(int input){         
        System.out.println("User Methods - method " + input);
    }               
}

class AdminUI extends UserUI{

    public AdminUI(){           
        admin = true;
    }

    public void manageAdminOptions(int input){
        adminMethods(input);

    }

    public void adminMethods(int input){
        System.out.println("Admin Methods - method " + input);          
    }               
}

**

有关此案的更多详细信息。

**

这是输出 - 用户屏幕:请选择以下选项之一:

1-更改消息。2-更改密码。3-更改电子邮件。4-显示我的详细信息。(带密码? - 是的) 5- 注销。6-显示消息。7-删除帐户(带密码)。

这是管理输出:

请选择以下选项之一:

1-更改消息。2-更改密码。3-更改电子邮件。4-显示我的详细信息。(带密码? - 是的) 5- 注销。6-显示消息。7-删除帐户(带密码)。7 - 按名称显示特定用户 8 - 显示所有用户 9 - 删除一个用户。10 – 删除所有用户!11-更改用户详细信息(密码/电子邮件)


我希望管理员会扩展用户,因为实际上他是一种用户。我想制作为 user 或 admin 实现实现的方法,而不是再次在 admin 中实现所有共享实现......

标签: javaif-statement

解决方案


我会更改您的代码,以便在该main方法中您可以根据输入创建 anUser或 an 。Admin然后,您可以通过让两个子类都实现一个接口来摆脱子类中的奇怪逻辑。

UserBase user = null;  // the interface
System.out.println("If User regular just 1-7, if admin 8-12 too");
Scanner sc = new Scanner (System.in);
int input = sc.nextInt();
if (input <= 7) 
{
    user = new UserUI();
}
else {
    user = new AdminUI ();
}

// then call common method
user.manageOptions();  // parameter are maybe not required ?

子类就像

//UserUI
public void manageOptions () { System.out.println("User Methods - method "); }

//AdminUI
public void manageOptions () { System.out.println("Admin Methods - method "); }

推荐阅读