【问题标题】: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]);  
    }
}
}

【问题讨论】:

    标签: java arrays string


    【解决方案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);
        }
    

    【讨论】:

      猜你喜欢
      • 2011-07-24
      • 2017-09-25
      • 1970-01-01
      • 2015-09-22
      • 2011-04-26
      • 2020-10-30
      • 2015-08-22
      • 2015-02-05
      相关资源
      最近更新 更多