Я пытаюсь написать программу, которая берет имя файла у пользователя (например: английский), затем открывает этот файл и печатает (9 вопросов), разделенных на (3 уровня, каждый уровень имеет 3 вопроса), затем открывается другой файл (EnglishC
), содержащий ответы, а затем сравнивает его с правильным ответом. если правильно grade++
.Чтение файла по строке и печать
Выход:
enter your choice:
1.English
2.Math
3.Science
java.io.FileNotFoundException: English.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.util.Scanner.<init>(Scanner.java:636)
at Generater.createQuestions(Generater.java:50)
at Generater.choose_subject_And_Level(Generater.java:41)
at Generater.main(Generater.java:139)
Источник:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Generater {
static int levelNo = 1;
static int subjectName;
static int grade;
static String fileName;
static String fileNameCorrect;
static String ans;
static String correctAns;
public static void choose_subject_And_Level() {
// here the main will call this method to ask the user what subject to be tested in?
Scanner input = new Scanner(System.in);
System.out.println("enter your choice:\n 1.English\n2.Math\n3.Science ");
subjectName = input.nextInt();
switch (subjectName) {
case 1:
fileName = "English.txt";
fileNameCorrect = "EnglishC.txt";
break;
case 2:
fileName = "Math.txt";
fileNameCorrect = "MathC.txt";
break;
case 3:
fileName = "Science.txt";
fileNameCorrect = "SienceC.txt";
break;
}
createQuestions(fileName, fileNameCorrect, levelNo);
}
public static void createQuestions(String fileName, String fileNameCorrect,
int levelNo) {
Scanner input, input2;
try {
input = new Scanner(new File(fileName));
input2 = new Scanner(new File(fileNameCorrect));
input.useDelimiter("*");
FileInputStream fs = new FileInputStream(fileName);
FileInputStream fs2 = new FileInputStream(fileNameCorrect);
BufferedReader br = new BufferedReader(new InputStreamReader(fs));
BufferedReader br2 = new BufferedReader(new InputStreamReader(fs2));!
while (input.hasNext()) {
switch (levelNo) {
case 1:
for (int i = 1,k=1; i <= 3 ; i++,k++) {
System.out.printf("\nQ#\f: " + input.next() + "\n" , k);
ans = input.next();
correctAns = input2.next();
if (ans == correctAns) {
grade++;
}
}
break;
case 2:
for (int i = 4, k = 1; i <= 6; i++, k++) {
try {
for (int j = 1; j <= 3; j++) {
br.readLine();
correctAns = br2.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.printf("\nQ#\f: " + input.next() + "\n" , k);
ans = input.next();
if (ans == correctAns) {
grade++;
}
}
break;
case 3:
for (int i = 7, k = 1; i <= 9; i++, k++) {
try {
for (int j = 1; j <= 6 ; j++){
br.readLine();
correctAns = br2.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.printf("\nQ#\f: " + input.next() + "\n" , k);
ans = input.next();
correctAns = input2.next();
if (ans == correctAns) {
grade++;
}
}
break;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
// the main
public static void main(String[] args) {
choose_subject_And_Level();
}
}
Пожалуйста, удалите ссылку на картинку вашей ошибки и вставить фактический текст ошибки в вашем вопросе. Большинство людей не хотят следить за ссылками, чтобы увидеть вашу ошибку. – StormeHawke