Объедините все возможные символы с днями недели - PullRequest
0 голосов
/ 08 апреля 2019

Мне нужно извлечь все комбинации символов «A, B, C, D, E, F, G», а затем объединить их с днями недели, чтобы получить результат:

Monday AB
Tuesday AC
Wednesday AD
Thursday AE
Friday AF
Saturday AG
Monday BA
Tuesday BC
Wednesday BD
....

Логреи составляют комбинацию символов, но я не могу совмещать с днями, я был бы очень признателен за помощь.

циклов, а, массивы и для.

public class daysP {

    public static void main(String[] args) 
    {
        String[] elements = "A,B,C,D,E,F,G".split(",");
        int r = elements.length; 
        combination(elements, "",2, r);
    }

    private static void combina(String[] elem, String act, int n, int r) {
        String[] di=new String[5];
        days[0]="Monday";
        days[1]="Tuesday ";
        days[2]="Wednesday";
        days[3]="Thursday";
        days[4]="Friday";
        days[5]="Saturday";

        if (n == 0) {            
            for (int x=0;x<7;)
            {   
                System.out.println(days[x]+act);x++;
            }
        } 
        else {
            for (int i = 0; i < r; i++) {
                if (!act.contains(elem[i]))
                    combina(elem, act + elem[i] + "", n - 1, r);
            }
        }
    }
}

ожидаемыйрезультат:

Monday AB
Tuesday AC
Wednesday AD
Thursday AE
Friday AF
Saturday AG
Monday BA
Tuesday BC
Wednesday BD
..............

до GF, который будет последней комбинацией

фактический результат:

MondayAB
Tuesday AB

1 Ответ

2 голосов
/ 08 апреля 2019

Мы можем сгенерировать этот вывод с помощью двойного цикла. Логика ниже заключается в том, что мы используем отдельные индексы для первых и последних букв, а также день недели, который печатается. Мы используем мод переменной counter, чтобы определить, какой день печатается, поэтому этот счетчик оборачивается вокруг каждого из шести дней в вашей определенной неделе.

String[] days = new String[6];
days[0] = "Monday";
days[1] = "Tuesday";
days[2] = "Wednesday";
days[3] = "Thursday";
days[4] = "Friday";
days[5] = "Saturday";
int NUM_CHARS = 7;

int counter = 0;

for (int i=0; i < NUM_CHARS; ++i) {
    String first = Character.toString((char)(i + 65));
    for (int j=0; j < NUM_CHARS; ++j) {
        if (i == j) continue;
        String second = Character.toString((char)(j + 65));
        String day = days[counter % days.length];
        ++counter;

        System.out.println(day + " " + first + second);
    }
}

Monday AB
Tuesday AC
Wednesday AD
Thursday AE
Friday AF
Saturday AG
Monday BA
Tuesday BC
Wednesday BD
...
Thursday GD
Friday GE
Saturday GF
...