Мой проект для класса программирования - это создание программы (с использованием NetBeans), где пользователи могут вводить информацию о фильме и хранить ее. Они могут искать список фильмов для информации, то есть название, актер, качество и т. Д. У меня есть java-файл, который позволяет пользователям вводить информацию о фильме в текстовые поля и сохраняет его в txt-файле.Поиск текстового файла и возвращаемого массива в Java
Проблема, с которой я столкнулась, заключается в том, что каждый раз, когда пользователь выполняет поиск фильма, он возвращает исключение с нулевым указателем.
Вот часть моего кода для поиска:
private void sbtnActionPerformed(java.awt.event.ActionEvent evt) {
try{
if(!mField.getText().equals("Search Movie Title")){
if(sameTitle(mField.getText())!=null){
display_Search_Info.main(info);
dispose();
}else{
JOptionPane.showMessageDialog(null, "No Movie Info Found.", "Error", JOptionPane.WARNING_MESSAGE);
}
}
if(!aField.getText().equals("Search Actor Name")){
if(sameActor(aField.getText())!=null){
display_Search_Info.main(info);
dispose();
}else{
JOptionPane.showMessageDialog(null, "No Movie Info Found.", "Error", JOptionPane.WARNING_MESSAGE);
}
}
if(!gBox.getSelectedItem().equals("Select Genre")){
if(sameGenre(String.valueOf(gBox.getSelectedItem()))!=null){
display_Search_Info.main(info);
dispose();
}else{
JOptionPane.showMessageDialog(null, "No Movie Info Found.", "Error", JOptionPane.WARNING_MESSAGE);
}
}
if(!lBox.getSelectedItem().equals("Select Location")){
if(sameLocation(String.valueOf(lBox.getSelectedItem()))!=null){
display_Search_Info.main(info);
dispose();
}else{
JOptionPane.showMessageDialog(null, "No Movie Info Found.", "Error", JOptionPane.WARNING_MESSAGE);
}
}
if(mField.getText().equals("Search Movie Title")&&aField.getText().equals("Search Actor Name")&&gBox.getSelectedItem().equals("Select Genre")&&lBox.getSelectedItem().equals("Select Location")){
JOptionPane.showMessageDialog(null, "Please Enter Information About The Movie", "Error", JOptionPane.WARNING_MESSAGE);
}
}catch(IOException e){
System.out.println("Error Occured");
}
}
public String[] sameTitle(String s) throws IOException{
BufferedReader br=new BufferedReader(new FileReader("M:/NetBeans Projects/MovieList/src/MovieInfo.txt"));
String line;
info= new String[6];
do{
for(int i=0; i<6; i++){
info[i]=br.readLine();
}
}while((line=br.readLine())!=null);
if(info[0].contains(s)){
return info;
}else{
return null;
}
}
public String[] sameActor(String s) throws IOException{
BufferedReader br=new BufferedReader(new FileReader("M:/NetBeans Projects/MovieList/src/MovieInfo.txt"));
String line="";
info= new String[6];
while((line=br.readLine())!=null&&!info[1].contains(s)||!info[2].contains(s)){
for(int i=0; i<6; i++){
info[i]=br.readLine();
}
}
if(info[1].contains(s)||info[2].contains(s)){
return info;
}else{
return null;
}
}
public String[] sameGenre (String s) throws IOException{
BufferedReader br=new BufferedReader(new FileReader("M:/NetBeans Projects/MovieList/src/MovieInfo.txt"));
String line="";
info= new String[6];
while((line=br.readLine())!=null&&!info[3].contains(s)){
for(int i=0; i<6; i++){
info[i]=br.readLine();
}
}
if(info[3].contains(s)){
return info;
}else{
return null;
}
}
public String[] sameLocation (String s) throws IOException{
BufferedReader br=new BufferedReader(new FileReader("M:/NetBeans Projects/MovieList/src/MovieInfo.txt"));
String line="";
info= new String[6];
while((line=br.readLine())!=null&&!info[4].contains(s)){
for(int i=0; i<6; i++){
info[i]=br.readLine();
}
}
if(info[4].contains(s)){
return info;
}else{
return null;
}
}
JOptionPane не работает и не отправляет его на следующий файл просто получать «Исключение в потоке» АВТ-EventQueue-0 "java.lang.NullPointerException".
Включите трассировку стека исключений. –
Без stacktrace, это невозможно сказать, но вот несколько общих советов: Если вы сравниваете hardcoded-string с переменной строкой, сначала установите hardcoded, IE: '' Search Movie Title '.equals (mField. getText()) 'Другой способ может вызвать NPE, если переменная/поле не инициализировано должным образом. – turbo
Я сделал это по-другому, потому что NetBeans всегда говорит, что логичнее делать это как текстовое поле. – user3177878