Я новый программист на Java, и я работаю над проектом, который требует, чтобы я прочитал текстовый файл с обзорами фильмов.Поиск и сортировка по Arraylist
После того, как я прочитал файл, меня попросили найти и отсортировать массив фильмов и вернуть общее количество отзывов для каждого фильма, а также средний показатель для каждого фильма.
Часть, в которую я сейчас застреваю, выполняет итерацию через список массивов.
Я использую внутренний и внешний цикл, и я, кажется, получаю бесконечный цикл.
Буду признателен за второй комплект глаз. Я смотрю на этот проект уже несколько дней и не вижу ошибок.
Вот код:
import java.io.*;
import java.util.*;
import java.lang.*;
public class MovieReviewApp {
public static void main(String[] args)
{
String strline = "";
String[] result = null;
final String delimit = "\\s+\\|\\s+";
String title ="";
//int rating = (Integer.valueOf(- 1));
ArrayList<MovieReview> movies = new ArrayList<MovieReview>();
//ArrayList<String> titles = new ArrayList<String>();
//ArrayList<Integer> ratings = new ArrayList<Integer>();
//HashMap<String, Integer> hm = new HashMap<String, Integer>();
//ListMultimap<String, Integer> hm = ArrayListMultimap.create();
try
{
BufferedReader f = new BufferedReader(new FileReader("/Users/deborahjaffe/Desktop/Java/midterm/movieReviewData.txt"));
while(true)
{
strline = f.readLine(); // reads line by line of text file
if(strline == null)
{
break;
}
result = strline.split(delimit, 2); //creates two strings
//hm.put(result[0], new Integer [] {Integer.valueOf(result[1])});
//hm.put(result[0], Integer.valueOf(result[1]));
// titles.add(result[0]);
//ratings.add(Integer.valueOf(result[1]));
MovieReview m = new MovieReview(result[0]);
movies.add(m);
MovieReview m2 = new MovieReview();
int rating = Integer.valueOf(result[1]);
int sz = movies.size();
for (int i = 0; i < sz; i++)
{
for (int j = 0; j < sz; j++)
{
m2 = movies.get(i);
if (movies.contains(m2))
{
m2.addRating(rating);
}
else
{
movies.add(m2);
m2.addRating(rating);
}
}
}
movies.toString();
//Collections.sort(movies);
} //end while
f.close();
//Set<String> keys = hm.keySet();
//Collection<Integer> values = hm.values();
} //end of try
catch(FileNotFoundException e)
{
System.out.println("Error: File not found");
}
catch(IOException e)
{
System.out.println("Error opening a file.");
}
} // end main
} // end class
Я нахожусь на телефоне, поэтому код трудно читать, но у вас есть правда. Это намеренный бесконечный цикл, не так ли? – ghostbust555
Это не похоже на бесконечный цикл, но вы создали экспоненциальную структуру цикла.В 1000 фильмов вы добавите миллион отзывов, и это только ухудшится. Возможно, вам захочется попробовать подмножество (например, 5-10) фильмов, чтобы вы могли найти все ошибки в вашем коде. – JimW
@DeborahJaffe Я предлагаю вам быстро взглянуть на мой ответ, особенно на то, что у вас есть сканер вместо BufferedReader для лучшей эффективности и универсальности. Что касается вашей проблемы, о которой вы говорили в ответе Суджан Риди А, можете ли вы, пожалуйста, расширить ее? Я понимаю, что он не читается должным образом, но, возможно, ввод и вывод из кода были бы более полезными при определении того, что не так. – Ungeheuer