学習プログラム (これについてはよくわかりません。Java を学習するためのものでした) では、getQ を呼び出したメソッドの 2 回目の反復で入力を取得するために出力が停止しません。
これはコードです:
import java.util.Scanner;
public class pubQuizArray {
private static Scanner kb = new Scanner (System.in);
static String[] questions;
static String[][] answers;
static char ans;
static char yn;
static char[] correctAns;
static int questionNum;
static int questionNumArray;
static int numQ;
static int score;
public static void writeQuiz()
{
getQNum();
getQ();
}
public static void getQNum()
{
System.out.println("How many Questions?");
numQ = kb.nextInt();
questions = new String[numQ];
}
public static void getAns()
{
answers = new String[numQ][6];
System.out.println("What are the answers?");
System.out.print("a: ");
answers[questionNum][0] = kb.nextLine();
System.out.print("b: ");
answers[questionNum][1] = kb.nextLine();
System.out.print("c: ");
answers[questionNum][2] = kb.nextLine();
System.out.print("d: ");
answers[questionNum][3] = kb.nextLine();
correctAns = new char[numQ];
System.out.println("What is the correct Answer?");
correctAns[questionNum] = kb.next().charAt(0);
}
public static void getQ()
{
questionNum = 0;
System.out.println("What is the First Question?");
questions[questionNum] = kb.nextLine();
questions[questionNum] = kb.nextLine();
getAns();
questionNum ++;
while(questionNum < numQ)
{
System.out.println("What is the next Question?");
questions[questionNum] = kb.nextLine();
getAns();
questionNum ++;
}
}
public static void askQ()
{
questionNum = 0;
score = 0;
do
{
System.out.println("Q" + (questionNum + 1) +": " + questions[questionNum]);
System.out.println("a: " + answers[questionNum][0]);
System.out.println("b: " + answers[questionNum][1]);
System.out.println("c: " + answers[questionNum][2]);
System.out.println("d: " + answers[questionNum][3]);
ans = kb.next().charAt(0);
if(ans == correctAns[questionNum])
{
System.out.println("That was correct");
score ++;
}
else
{
System.out.println("That was incorrect");
}
questionNum ++;
}while(questionNum < numQ);
}
public static void menu()
{
System.out.println("Would you like to write a new Quiz? y/n");
yn = kb.next().charAt(0);
while(yn == 'y')
{
writeQuiz();
System.out.println("Would you like to play the Quiz? y/n");
yn = kb.next().charAt(0);
while(yn == 'y')
{
askQ();
System.out.println("Would you like to play again? y/n");
yn = kb.next().charAt(0);
}
}
}
public static void main(String[] args)
{
menu();
}
}
これが出力です
Would you like to write a new Quiz? y/n
y
How many Questions?
2
What is the First Question?
asdf
asdf
What are the answers?
a: asd
b: as
c: a
d: adfs
What is the correct Answer?
a
What is the next Question?
What are the answers?
a:
2 番目の質問が何であるかを尋ねるとわかるように、入力は許可されません。これはJavaを学ぶための単なるプロジェクトであることを覚えておいてください。