首页 > 解决方案 > java中使用for循环的两个名称组合

问题描述

我想要的是要求用户输入三 (3) 个名字,然后显示以下内容:所有可能的两个名字组合。
例如,我将输入 Mike Tyler Bryle

迈克·泰勒迈克·布莱尔·泰勒迈克·泰勒
·布莱尔·布莱尔迈克·
布莱尔·泰勒


这是我的代码

import java.io.*;
import java.util.*;

public class Javacomprog{
  
    public static void main(String[] args) {
        
        //GET THE NAME FIRST
       String name_1, name_2, name_3;
       String prints =" ";
       //STORING THE 3 NAMES
       String[] a_names = new String[3];
       //COMBINATION NAME
       String[] c_names = new String[3];
       
       Scanner sc = new Scanner(System.in);
       
       //STORE IN ARRAY THE USER INPUT NAMES
       System.out.println("Enter three first names:");
       for(int i = 0; i < a_names.length; i++){
           a_names[i] = sc.nextLine();
       }
       // STORE THE NAME COMBINATION
       for(int j = 0; j < a_names.length; j++){

        int a = 0;
        
        //CHECK IF IT IS A REPEATED NAME USING EQUAL IGNORECASE
        if(a_names[a].equalsIgnoreCase(a_names[j]) == true){
         a++;
        }
         c_names[j] = a_names[a]+ " " + a_names[j];
   
    
       }
       //PRINT NAME COMBINATION
       for(int l = 0; l < c_names.length; l++){
        System.out.println(c_names[l] + " ");  
       }
       


    }
    
}

你能解释一下我如何使用 for 循环进行名称组合吗?谢谢。

标签: java

解决方案


您可以根据要查找的组合数量使用嵌套的 for 循环进行组合。在这种情况下,您需要对,因此两个循环(外部和内部)就足够了。

String[] names = {"Mike", "Tyler", "Bryle"};
List<String> combinations = new ArrayList<>();

for(int i = 0; i < names.length - 1; i++) {
  for(int j = i + 1; j < names.length; j++) {
    combinations.add(names[i] + " " + names[j]);
    combinations.add(names[j] + " " + names[i]);
  }
}
for(String name : combinations)
  System.out.println(name);

推荐阅读