如何组合字符串并制作一个数组?

Posted

技术标签:

【中文标题】如何组合字符串并制作一个数组?【英文标题】:How to make a combination of strings and make an array of it? 【发布时间】:2022-01-17 11:50:56 【问题描述】:

我希望用户输入 3 个名称,程序将对其进行 6 种组合。之后,再次要求用户通过输入基于名称组合的数字来选择名称。例如,用户输入:name1、name2 和 name3。组合将是:name1 name2、name1 name 3、name2 name 1、name2 name3、name3 name1、name3 name2。并且用户将通过输入与组合相关联的数字从这些组合中进行选择。我已经尝试过,但无法真正了解如何进行组合。

import java.util.Scanner;
public class Strings1 

public static void main(String[] args) 
    Scanner input = new Scanner(System.in);
    
    System.out.println("Please enter 3 names: ");
    String name1 = input.nextLine();
    String name2 = input.nextLine();
    String name3 = input.nextLine();
    String names[] = name1, name2, name3;
    
    
    System.out.println("Possible combinations are: ");
    
    for (int i = 1; i <= 6; i++) 
        System.out.println(i + " - " + names[0] + " " + names[1]);  
    


【问题讨论】:

【参考方案1】:
public static void main(String[] args) 
         Scanner input = new Scanner(System.in);

         System.out.println("Please enter 3 names: ");
         String name1 = input.nextLine();
         String name2 = input.nextLine();
         String name3 = input.nextLine();
         String names[] = name1, name2, name3;
            
         permutationRecursive(names.length, names, ' ');
        
         System.out.println("Possible combinations are: " + combincations.toString());
    
    
    private static ArrayList<String> combincations = new ArrayList<>();
    
    public static void permutationRecursive(int n, String[] elements, char delimiter) 
        if (n == 1) 
            String combinationString = printArray(elements, delimiter);
            combincations.add(combinationString);
         else 
            for (int i = 0; i < n - 1; i++) 
                permutationRecursive(n - 1, elements, delimiter);
                if (n % 2 == 0) 
                    swap(elements, i, n - 1);
                 else 
                    swap(elements, 0, n - 1);
                
            
            permutationRecursive(n - 1, elements, delimiter);
        
    

    private static void swap(String[] input, int a, int b) 
        String tmp = input[a];
        input[a] = input[b];
        input[b] = tmp;
    

    private static String printArray(String [] input, char delimiter) 
        StringBuilder strBuilder = new StringBuilder();
        for (int i = 0; i < input.length; i++) 
            strBuilder.append(input[i]);
            strBuilder.append(delimiter);
        
        return strBuilder.toString().substring(0, strBuilder.length()-1);
    

【讨论】:

以上是关于如何组合字符串并制作一个数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在java里java字符串数组合并成一个数组?

ruby - 如何从字符串数组中生成可能的字母顺序组合?

当数组的数量和每个数组的长度未知时生成字符组合的所有排列

如何使用double数组的资源制作一个wpf组合框?

Android:字符串数组

如何检查字符串是不是包含在数组中?不和谐.js