第一个Java程序。我正在构建一个用于娱乐/自学的抽认卡应用程序,但是我还没有弄清楚如何翻转卡片以显示背面。
ArrayList(称为 ready )包含我的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");
}
}
MainProgram.java中的一个for循环用于将抽认卡添加到 ready 卡片组中-我只是删除了大部分代码以专注于遇到的问题。
控制台正确显示卡的正面:
显示当前卡的控制台输出:
当然,它按顺序显示了下一张卡片,因为我选择中断每种开关情况,直到我弄清楚如何正确地将正确的参数传递给showBack():
控制台输出显示下一张卡片:
再次,去除不必要的代码以使内容简洁明了。
如果我错了,请纠正我,但是我不能从MainProgram.java的循环中获取变量 i 并将其用作 showBack()中的参数因为 i 不是全局变量。我认为我只需要查找该for循环的当前迭代并将其用作showBack的参数即可显示该卡的背面。
我确实意识到,最终我将不得不处理由于不使用nav.close()而导致的扫描仪内存泄漏。
我觉得这是一个简单的解决方案。 **编辑:**我应该使用指针? How can I pass the index of a for loop as the argument for pthread_create