У меня есть эта простая программа, где я пытаюсь вывести все карты в колоду карт. Однако он выводит только 1-9 карт каждого набора и ни одну из лицевых карточек. т.е. выполняется только цикл for с j
, но не f
for
цикла с cardFace
массива cardFace
. Почему это?
public class cards {
public final String cardValue[] = {"Heart", "Diamond", "Spade", "Club"};
public final String cardFace[] = {"Jack", "Queen", "King", "Ace"};
public void outputCards() {
for (int i = 0; i < cardValue.length; i++) {
int k = 1;
if (k <= 9) {
for (int j = 1; j <= 9; j++) {
System.out.println("The Card is a " + j + " And is a " + cardValue[i]);
k++;
}
} else {
for (int f = 10; f < cardFace.length; f++) {
System.out.println("The Card is a " + f + " And is a " + cardValue[i]);
k++;
}
}
}
}
}
Даже если ваш код попал в цикл, он никогда не будет запущен, потому что это условие никогда не будет правдой:
for(int f = 10; f < cardFace.length; f++){
Если вы проверите массив cardFace и получите его длину, вы увидите, что он всегда меньше f.
Большая часть вашей логики немного ушла. Я предлагаю вам сначала выписать шаги программы на бумаге, продумав шаги, прежде чем пытаться зафиксировать их для кодирования, потому что обычно эти ошибки типов вызваны кодированием перед тем, как думать.
for(int i = 0; i <cardValue.length; i++){
int k = 1;
if(k <=9){
...
Учитывая предыдущий код, он всегда будет вводить символы if и never на else. Следовательно, для тех, кто использует переменную f, никогда не будет выполняться.