Передача индекса итерации цикла For в аргумент метода - PullRequest
0 голосов
/ 01 февраля 2019

Первая Java-программа.Я создаю приложение для карточек для развлечения / самообучения, и я еще не разобрался, как перевернуть карточку, чтобы показать ее обратно.

ArrayList (называемый ready ) содержитобъекты моего класса Flashcard.Одним из методов Flashcard является showFront .В MainProgram.java я буду перебирать ArrayList, вызывая этот метод на каждой итерации, чтобы показать переднюю часть флэш-карты, а затем дождаться ввода с клавиатуры, чтобы решить, что делать дальше:

MainProgram.java:

    ArrayList<Flashcard> ready = new ArrayList<Flashcard>();
    ArrayList<Flashcard> entireDeck = new ArrayList<Flashcard>();

    // Create ten flashcards and add them to the pile "entireDeck"
    for(int counter = 0; counter < 10; counter++) {

        Flashcard FC = new Flashcard();
        entireDeck.add(FC);
    }

  (entireDeck.get(0)).addData(0,"A little","Un poco");

Flashcard.java:

class Flashcard {
    public int cardNumber;
    public String word;
    public String translation;

// Add data to a flashcard
    public void addData(int cardNumber, String word, String translation){ 
        this.cardNumber = cardNumber;
        this.word = word;
        this.translation = translation;
    }

    public void showFront(int index) {
    System.out.println("Card #:\t\t" + cardNumber);
    System.out.println("Word:\t\t" + word + "\n\n");
    System.out.println("1) Replay audio\t 2) Flip card\t 3) Skip\n");

        Scanner nav = new Scanner(System.in);
        int userInput = nav.nextInt();
        switch (userInput) {
            case 1:
                System.out.println("Playing audio");
                break;
            case 2:
                System.out.println("Flipping card");
                showBack(**what to put here?**);
                break;
            case 3:
                System.out.println("Next card...");
                break;
            default:
                System.out.println("Invalid entry. Come back soon!\n");
                break;
        }
    }

    public void showBack(int index) {
        System.out.println("Card #:\t\t" + cardNumber);
        System.out.println("Translation:\t\t" + translation + "\n\n");
        System.out.println("1) Replay audio\t 2) Flip card\t 3) Skip\n");
    }
}

Цикл for в MainProgram.java использовался для добавления карточек вколода ready - я просто удаляю большую часть своего кода, чтобы сосредоточиться на проблеме, с которой я столкнулся.

Консоль правильно отображает переднюю часть карты:

Вывод на консоль с отображением текущей карты:

enter image description here

И, конечно, он показывает следующую карту в последовательности, потому что я выбрал отключение каждого корпуса переключателя довыяснить, как правильно передать правильный аргумент в showBack ():

Вывод на консоль с отображением следующей карты:

enter image description here

Снова зачистканенужный код для уточнения / краткости.

Поправьте меня, если я ошибаюсьно я не могу взять переменную i из цикла в MainProgram.java и использовать ее в качестве аргумента в showBack () , потому что i не является глобальнымпеременная.Я думаю, что мне просто нужно найти текущую итерацию цикла for и использовать ее в качестве аргумента showBack, чтобы показать обратную сторону этой карты.

Я понимаю, что в конце концов мне придется иметь дело сУтечка памяти сканера, вызванная неиспользованием nav.close ().

У меня такое ощущение, что это такое простое решение.** Редактировать: ** Я должен использовать указатели? Как я могу передать индекс цикла for в качестве аргумента для pthread_create

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...