使用相同的输入处理多个方法

问题描述

热烈的问候。

我有一个场景,我有10种方法,即process1,process2 ...,process10 根据输入,我需要按特定顺序执行10种方法中的几种。 1)1、3、5、7 2)2,4,6,8 3)1,5,9,10

无论我执行的顺序如何,都应将第一种方法输出用作第二种方法的输入,依此类推。

我在互联网上进行了很多搜索,但没有找到合适的内容。我开始做下面的代码。 到目前为止,我正在使用java的concat方法来实现这一目标。

public class Perform {

    static String op = "";
    
    public static void main(String[] args) {
                process(list);
    }
    
    public static void process(List<String> list)
    {

        for(String str: list)
        {
            if(str.startsWith("Samsung"))
            {
process1("test").concat(process2(op).concat(process3(op)).concat(process4(op)));

            }
        }
    }
    
    public static String process1(String str)
    {
        System.out.println("process1 start");
        System.out.println("str1:"+str);
        System.out.println("process1 end");
        return str+"1";
    }
    public static String process2(String str)
    {
        System.out.println("process2 start");
        System.out.println("str2:"+str);
        System.out.println("process2 end");
        return str+"2";
    }
    public static String process3(String str)
    {
        System.out.println("process3 start");
        System.out.println("str3:"+str);
        System.out.println("process3 end");
        return str+"3";
    }
    public static String process4(String str)
    {
        System.out.println("process4 start");
        System.out.println("str4:"+str);
        System.out.println("process4 end");
        return str+"4";
    }
}

输出

process1开始

str1:test

process1结束

process2开始

str2:

op:

process2结束

process3开始

str3:

process3结束

process4开始

str4:

process4结束

op:test1234

期望得到答案并处理所有4种方法,但是问题是:它没有打印参数“ str”的值。为什么?

如果我保留代码

op = process1("test");
op = process2(op);
op = process3(op);
op = process4(op);

代替

process1("test").concat(process2(op).concat(process3(op)).concat(process4(op)));

然后打印出作为参数的str的值。

请从下面的代码中回答问题,并为我提出一些适合这种情况的代码

解决方法

我找到了解决方案。我开发了以下代码来解决它。请让我知道是否有人对此有更好的解决方案。

public class Perform {

    private static List<Integer> SamsungMethodExecution = Arrays.asList(1,2,3,4,5);
    private static List<Integer> NokiaMethodExecution = Arrays.asList(6,7,8);
    private static List<Integer> LgMethodExecution = Arrays.asList(9,10);
    
    
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        
        list.add("Lgmsg");
        list.add("Samsungmsg");
        list.add("Nokiamsg");
        list.add("Lgmsg");
        list.add("Samsungmsg");
        list.add("Nokiamsg");
        list.add("Lgmsg");
        list.add("Samsungmsg");
        list.add("Nokiamsg");
//      
        process(list);
    }
    
    public static void process(List<String> list)
    {
        for(String str: list)
        {
            if(str.startsWith("Samsung"))
            {
                System.out.println("SAMSUNG======================================");
                Process.process(SamsungMethodExecution,str.replace("Samsung",""));
                System.out.println("SAMSUNG======================================");
                System.out.println();
            }else if(str.startsWith("Nokia"))
            {
                System.out.println("NOKIA========================================");
                Process.process(NokiaMethodExecution,str.replace("Nokia",""));
                System.out.println("NOKIA========================================");
                System.out.println();
            }else
            {
                System.out.println("LG===========================================");
                Process.process(LgMethodExecution,str.replace("Lg",""));
                System.out.println("LG===========================================");
                System.out.println();
            }
        }
    }

public class Process {
    
    public static String process(List<Integer> processList,String msg) {
        String output = "";
        for(int i: processList)
        {
            switch(i)
            {
                case 1:
                    output = Process.process1(msg); break;
                case 2:
                    output = Process.process2(msg); break;
                case 3:
                    output = Process.process3(msg); break;
                case 4:
                    output = Process.process4(msg); break;
                case 5:
                    output = Process.process5(msg); break;
                case 6:
                    output = Process.process6(msg); break;
                case 7:
                    output = Process.process7(msg); break;
                case 8:
                    output = Process.process8(msg); break;
                case 9:
                    output = Process.process9(msg); break;
                case 10:
                    output = Process.process10(msg); break;
                default :
                    System.out.println("Sorry,no specific match found");
            }
        }
        return output;
    }

    public static String process1(String msg)
    {
        System.out.println("process1: "+msg);
        return msg;
    }
    public static String process2(String msg)
    {
        System.out.println("process2: "+msg);
        return msg;
    }
    public static String process3(String msg)
    {
        System.out.println("process3: "+msg);
        return msg;
    }
    public static String process4(String msg)
    {
        System.out.println("process4: "+msg);
        return msg;
    }
    public static String process5(String msg)
    {
        System.out.println("process5: "+msg);
        return msg;
    }
    public static String process6(String msg)
    {
        System.out.println("process6: "+msg);
        return msg;
    }
    public static String process7(String msg)
    {
        System.out.println("process7: "+msg);
        return msg;
    }
    public static String process8(String msg)
    {
        System.out.println("process8: "+msg);
        return msg;
    }
    public static String process9(String msg)
    {
        System.out.println("process9: "+msg);
        return msg;
    }
    public static String process10(String msg)
    {
        System.out.println("process10: "+msg);
        return msg;
    }
}

两个类,一个是主类,另一个是具有实际逻辑的Process类。