簡體   English   中英

如何打印第一個數組中的單詞,第二個數組中的第二個和第三個數組中的第三個的單詞組合?

[英]How to print a combination of words one from first array the second from second array and third from third array?

我希望此代碼輸出以下內容,它具有三個以逗號分隔的數組列表條目作為分隔符("slow,steady"),("blue, white,green")("whale, shark "); 它必須輸出以下內容

slow blue whale 
slow white whale 
slow white shark 
steady blue whale 
steady white shark 
and so forth.

我能夠將每個單詞分開,並將它們放在三個單獨的列表中。 list1包含慢速穩定list2包含藍白色綠色,list3包含鯨鯊。 但是我無法將它們連接起來,歡迎任何輸入。

import java.util.StringTokenizer;  
import java.util.ArrayList;
import java.util.List;
import java.util.*;  

public class HelloWorld {    

    String input;   //input String  
    StringBuffer output;  //Holds the output  
    String delimiter = ","; //Delimiter (default comma (,))  
    String arrayOfWords[];  
    List<String> list1 = new ArrayList<String>();
    List<String> list2 = new ArrayList<String>();
    List<String> list3 = new ArrayList<String>();

    int listCount;

    /* 
     * Generates combinations by applying the  
     * concept of recursion 
     */  


    public void generateCombinations(String input, String delimiter,int listCount)   
    {       
          output = new StringBuffer();             
          this.input = input;    
          this.delimiter = delimiter;  
          this.listCount = listCount;

                 String[] stockArr = new String[list1.size()];
                 String[] stockArr1 = new String[list2.size()];
                 String[] stockArr2 = new String[list2.size()];

             if(listCount == 1) {
              String items1[] = input.split(",");
               for(int i=0;i< items1.length; i++){

                 list1.add(items1[i]);
               }

             }

             else if(listCount == 2) {
               String items2[] = input.split(",");
               for(int i=0;i< items2.length; i++){

                 //System.out.println(items2[i]);
                 list2.add(items2[i]);
               }

             }

             else {
              String items3[] = input.split(",");
               for(int i=0;i< items3.length; i++){

                // System.out.println(items3[i]);
                 list3.add(items3[i]);
               }

             }


         stockArr = list1.toArray(stockArr);
         stockArr1 = list2.toArray(stockArr1);
         stockArr2 = list3.toArray(stockArr2);


      for(String s1 : stockArr){

             System.out.print(s1);         
      }        


      for(String s2 : stockArr1){

             System.out.print(s2);     
    }        



      for(String s3 : stockArr2){

             System.out.print(s3);       
      }        


      for(int i=0;i<list1.size();i++){
        String s1 = list1.get(i).toString();
              for(int j=0;j<list2.size();j++){
                    String s2 = list2.get(j).toString();
                     System.out.println(s1+s2);
              }


     }


 }   

    public static void main(String[] args) {    
        ArrayList <String> strings = new ArrayList <String>();
        int i=1;

        for(String string : strings){
        new HelloWorld().generateCombinations(string , ",",i);  
            ++i;
        }

    }    
}   

這可以使用嵌套的for循環來完成。 在您的情況下為3層。

    stockArr = list1.toArray(stockArr);
    stockArr1 = list2.toArray(stockArr1);
    stockArr2 = list3.toArray(stockArr2);

    for (String a : stockArr) {
        for (String b : stockArr1) {
            for (String c : stockArr2) {
                System.out.println(a + " " + b + " " + c);
            }
        }
    }

另外,如果您使用StringBuilder來連接多個String ,它總是會表現得更好。

    for (String a : stockArr) {
        for (String b : stockArr1) {
            for (String c : stockArr2) {
                StringBuilder sb = new StringBuilder();
                sb.append(a)
                  .append(" ")
                  .append(b)
                  .append(" ")
                  .append(c);
                System.out.println(sb.toString());
            }
        }
    }

試試這個

  public static void main(String[] args) {

    List<String[]> afterSplit = new ArrayList<String[]>();
    afterSplit.add("slow, steady".split(","));
    afterSplit.add("blue, white, green".split(","));
    afterSplit.add("whale, shark ".split(","));
    for (int i = 0; i < afterSplit.get(0).length; i++) {
        for (int j = 0; j < afterSplit.get(1).length; j++) {
            for (int k = 0; k < afterSplit.get(2).length; k++) {
                System.out.println(afterSplit.get(0)[i].trim() + " "
                        + afterSplit.get(1)[j].trim() + " "
                        + afterSplit.get(2)[k]);

            }
        }

    }

}

終於,它運行良好:)獎勵:現在,連接多少個單詞都沒有關系。

import java.util.*;
import java.util.stream.*;

public class Test {

    public static void generateCombinations(ArrayList <String> strings, String delimiter){

        int stringsSize = strings.size();
        int i=0;
        String text = "";
        parseList(text, stringsSize ,i, strings, delimiter);

    }

    public static void parseList(String text, int stringsSize, int i,    ArrayList <String> strings, String delimiter) {
        String stringStream = strings.get(i);
        String[] list = stringStream.split(delimiter);
        if (i==stringsSize-1) {
            for (String string : list){
                System.out.println(text + " " + string.replaceAll("\\s+",""));
            }
        } else {
            for (String string : list){
                String text2 = text + " " + string.replaceAll("\\s+","");
                int j = i+1;
                parseList(text2, stringsSize, j, strings, delimiter);
            }
        }
    }

    public static void main(String[] args) {    
        ArrayList <String> strings = new ArrayList <String>();
        strings.add("slow,steady");
        strings.add("blue, white, green");
        strings.add("whale, shark ");

        generateCombinations(strings , ",");  

    }  
}

結果是 :

 slow blue whale
 slow blue shark
 slow white whale
 slow white shark
 slow green whale
 slow green shark
 steady blue whale
 steady blue shark
 steady white whale
 steady white shark
 steady green whale
 steady green shark

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM