Мне дали этот фрагмент кода для анализа:
private String type[] = {"Hearts","Spades","Clubs","Diamonds"};
private String rank[] = {"2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"};
private String deck[] = new String[52];
private void createDeck(){
for (int i = 0; i < rank.length; i++){
for (int j = 0; j < type.length; j++){
deck[type.length*i + j] = rank[i]+type[j];
}
}
}
Это простая симуляция колоды карт, и я полностью понимаю, как работают массивы и заполняются через циклический лог c. Однако мне трудно понять, где интуиция и аргументы в пользу того, как выполняется индексация массива: type.length*i + j
После анализа результатов этого достаточно просто, вы получаете приращения 1 для каждый л oop вокруг. Отлично. Но я не могу из-за любви к Java понять, как создатель пришел, чтобы сформулировать эту формулу для чего-то такого простого, как увеличение на 1 каждый раз.
Я не уверен, о чем я здесь спрашиваю. .. в чем причина / логика c за этой простой формулой? Что я могу сделать, чтобы получить такую интуицию в подобных ситуациях? Это просто кажется совершенно неожиданным с моей точки зрения. Я довольно хорошо знаком с алгеброй и исчислением, но это не то, что я мог бы выяснить с помощью математических знаний, которые у меня есть.
Спасибо.