Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包安装程序的Java程序_Java - Fatal编程技术网

包安装程序的Java程序

包安装程序的Java程序,java,Java,请您帮助编写一个java程序,该程序应接受定义依赖项的字符串数组。每个字符串包含一个包的名称,后跟冒号和空格,然后是该包所需的任何依赖项。为了简单起见,我们假设一个包最多只能有一个依赖项。程序应按安装顺序输出一个以逗号分隔的包名列表,以便包的依赖项始终位于该包之前。程序应将包含周期的依赖项规范视为无效而拒绝 有效输入示例 KittenService: LeetMee:网络门户 网络门户:Ice 凯特服务公司 欺诈之流:Leetmee 冰: 上述内容的有效输出为: KittenService、Ic

请您帮助编写一个java程序,该程序应接受定义依赖项的字符串数组。每个字符串包含一个包的名称,后跟冒号和空格,然后是该包所需的任何依赖项。为了简单起见,我们假设一个包最多只能有一个依赖项。程序应按安装顺序输出一个以逗号分隔的包名列表,以便包的依赖项始终位于该包之前。程序应将包含周期的依赖项规范视为无效而拒绝

有效输入示例 KittenService: LeetMee:网络门户 网络门户:Ice 凯特服务公司 欺诈之流:Leetmee 冰:

上述内容的有效输出为:

KittenService、Ice、网络门户、Leetmeme、CamelCaser、Fraudstream

应拒绝的输入示例(包含周期) KittenService: LeetMee:网络门户 网络门户:Ice 凯特服务公司 欺诈流:
Ice:LeetMe

首先:SO不是编码服务。告诉我们你有什么,问题在哪里,你会得到帮助。现在是解决方案——我不会编写任何代码,我希望没有其他人这样做。由于依赖项不包含任何循环,因此该结构是一个树。只需遍历树postorder并按此顺序导入每个包。

从输入字符串数组获取包列表:

public static List<String> getPackages(String[] intputStrings,
        String inputDelimiter, char wordEndChar, String rejectWord,
        String outputDelimiter) {

    List<String> al = new ArrayList<String>();

    for (String inputString : intputStrings) {

        if (!(inputString.indexOf(rejectWord) > 0)) {

            for (String string : inputString.split(inputDelimiter)) {
                int idx = string.indexOf(wordEndChar);
                if (idx > 1)
                    al.add(string.substring(0, idx));
            }
        }
    }

    return al;
}
public static void main(String[] args) {

String intputString[] = {
        "KittenService: Leetmeme: Cyberportal Cyberportal: Ice CamelCaser: KittenService Fraudstream: Ice: Leetmeme",
        "(contains cycles) KittenService: Leetmeme: Cyberportal Cyberportal: Ice CamelCaser: KittenService Fraudstream: Ice: Leetmeme",
        "One: Two: x Three: Ice CamelCaser: KittenService Fraudstream: Five: Leetmeme" };

List<String> s = getPackages(intputString, " ", ':', " cycles", ", ");

for (String string : s)
    System.out.print(string + " ,");        
}
publicstaticlist getPackages(String[]intputStrings,
字符串输入分隔符、字符wordEndChar、字符串拒绝字、,
字符串输出分隔符){
List al=新的ArrayList();
for(字符串输入字符串:输入字符串){
如果(!(inputString.indexOf(rejectWord)>0)){
for(字符串:inputString.split(inputDelimiter)){
int idx=string.indexOf(wordEndChar);
如果(idx>1)
al.add(string.substring(0,idx));
}
}
}
返回al;
}
调用部分(输入和输出):

public static List<String> getPackages(String[] intputStrings,
        String inputDelimiter, char wordEndChar, String rejectWord,
        String outputDelimiter) {

    List<String> al = new ArrayList<String>();

    for (String inputString : intputStrings) {

        if (!(inputString.indexOf(rejectWord) > 0)) {

            for (String string : inputString.split(inputDelimiter)) {
                int idx = string.indexOf(wordEndChar);
                if (idx > 1)
                    al.add(string.substring(0, idx));
            }
        }
    }

    return al;
}
public static void main(String[] args) {

String intputString[] = {
        "KittenService: Leetmeme: Cyberportal Cyberportal: Ice CamelCaser: KittenService Fraudstream: Ice: Leetmeme",
        "(contains cycles) KittenService: Leetmeme: Cyberportal Cyberportal: Ice CamelCaser: KittenService Fraudstream: Ice: Leetmeme",
        "One: Two: x Three: Ice CamelCaser: KittenService Fraudstream: Five: Leetmeme" };

List<String> s = getPackages(intputString, " ", ':', " cycles", ", ");

for (String string : s)
    System.out.print(string + " ,");        
}
publicstaticvoidmain(字符串[]args){
字符串intputString[]={
“KittenService:LeetMee:Cyberportal:Ice CamelCaser:KittenService欺诈流:Ice:LeetMee”,
“(包含周期)KittenService:LeetMee:Cyberportal:Ice CamelCaser:KittenService欺诈流:Ice:LeetMee”,
“1:2:x3:Ice CamelCaser:KittenService欺诈流:5:LeetMee”};
列表s=getPackages(intputString,“,”:“,“cycles”,“,”);
用于(字符串:s)
系统输出打印(字符串+“,”);
}

您尝试了什么吗?我计划在地图中输入。请你解释一下我应该应用什么样的逻辑。Stackoverflow不是一个网站,你可以在那里发布问题并获取代码。请向我们展示您的尝试,我们可能会帮助您理解您不理解的概念。感谢您的回复。我需要逻辑方面的帮助:我有一个疑问,我不能做一棵树,因为根据输入,将有许多独立的树,如1)kittenservice->CamelCaser 2)ice->Cyberportal->LeetMee->CamelCaser->fraudstreamclass Solution{Map input=new HashMap();List output=new LinkedList();public void getInput()抛出IOException{BufferedReader in=new BufferedReader(new InputStreamReader(System.in));字符串s;while((s=in.readLine())!=null和&s.length()!=0){if(s.split(:).length>1)input.put(s.split(:)[0]。trim(),s.split((:)[1]。trim();else input(s.split(:)[0].trim(),null);}}}}公共类PackageInstaller{public static void main(字符串args[])抛出IOException{Solution Solution=new Solution();Solution.getInput();}我已获取输入并存储在映射中。我现在将在另一个函数中应用逻辑,该函数将返回字符串列表作为输出。嗨,Rajesh,感谢上面的解决方案。不幸的是,它没有给出预期的解决方案。如果有人能解释逻辑,我可以自己编写代码。我已经更新了代码。检查并运行它。以防万一,我错过了从您的输入中捕获的内容,请告诉我。