如何组合字符串并制作一个数组?
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);
【讨论】:
以上是关于如何组合字符串并制作一个数组?的主要内容,如果未能解决你的问题,请参考以下文章