2013-11-27 4 views
1

У меня есть два файла:Сравнить файлы строку на подстроки

Grader.getFileInfo("data\\studentSubmissionA.txt"); 
Grader.teacherFiles("data\\TeacherListA.txt"); 

Оба содержат список математических задач, но TeacherList нерешенной для того, чтобы проверить, что StudentSubmission не был изменен по сравнению с оригинальной версией.

studentSubmission отправляется в класс Grader и метод в настоящее время выглядит следующим образом:

public static void getFileInfo(String fileName) 
     throws FileNotFoundException { 

    Scanner in = new Scanner(new File(fileName)) 

    while (in.hasNext()) { 
    String fileContent = in.nextLine(); 
    } 

и метод TeacherFiles выглядит

public static void teacherFiles(String teacherFiles) 
     throws FileNotFoundException{ 

    Scanner in = new Scanner(new File(teacherFiles)); 

    while (in.hasNext()){ 
     String teacherContent = in.nextLine(); 

     String line = teacherContent.substring(0, teacherContent.indexOf('=')); 
    } 

Я не знаю, как получить эти методы в другой метод, чтобы сравнить их, поскольку они поступают из файла, и я должен поместить что-то в сигнатуру метода, чтобы передать их, и это не сработает.

Я пробовал поместить их одним способом, но это тоже был спад.

Я не знаю, куда идти отсюда.

И, к сожалению, я не могу использовать try/catch или массивы.

Можно ли послать .substring (0, .indexof ('=')) с помощью методов?

Нравится line = teacherFiles(teacherContent.substring(0 , .indexof('='))); Возможно ли это?

+0

Это лабораторная работа, и я не могу использовать массивы. Если бы я мог, это было бы в миллион раз проще, и я не стал бы спрашивать. – CherryBomb95

+0

Как мне это сделать? – CherryBomb95

+0

Хорошо, спасибо. – CherryBomb95

ответ

0

Подумайте об этом в более общих терминах. Обратите внимание, что ваши методы, называемые getFileInfo и teacherFiles, соответственно являются теми же самыми, за исключением нескольких нюансов. Итак, почему бы нам не подумать о том, чтобы найти оптимальный способ слияния двух функциональных возможностей и обработки нюансов за пределами них?

Логично, что вы не можете использовать массивы, поскольку вам нужно знать количество элементов вашего массива перед его инициализацией, и ваш массив уже был бы инициализирован при чтении файла. Поэтому использование массива для этой задачи является либо излишним (например, вы выделяете 1000 элементов в своей памяти, и используете только 10 элементов), либо недостаточно (если вы создаете массив из 10 элементов, но вам понадобится 1000). Таким образом, из-за того, что вы не знаете количество строк заранее, вам нужно использовать другую структуру данных для своей задачи.

Итак, создайте следующий метод:

public static AbstractList<String> readFile(String filePath) throws FileNotFoundException, IOException { 
    Scanner s = new Scanner(new File(filePath)); 
    AbstractList<String> list = new ArrayList<String>(); 
    while (s.hasNext()){ 
     list.add(s.next()); 
    } 
    s.close(); 
    return list; 

} 

Затем использовать метод, чтобы прочитать файл студента и прочитать файл учителя. Сохраняйте результаты в две отдельные переменные AbstractList<String>, затем перебирайте их и сравнивайте их по своему усмотрению. Опять же, подумайте в более общих терминах.

Смежные вопросы