[英]Searching a Text File and Returning array in Java
我的编程课项目是创建一个程序(使用NetBeans),用户可以在其中输入电影信息并将其存储。 他们能够在电影列表中搜索信息,例如标题,演员,质量等。我有一个Java文件,允许用户在文本字段中输入有关电影的信息,并将其保存到txt文件中。
我遇到的问题是,每当用户搜索电影时,它都会返回一个空指针异常。
这是我的搜索代码的一部分:
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无法正常工作,它不会将其发送到下一个文件,而只是获得“线程“ AWT-EventQueue-0”中的异常” java.lang.NullPointerException”。
您所有的方法似乎都具有“相同”的结构,建议您使用列表存储匹配的行。 也就是说,我认为您应该尝试更多类似的方法-
public String[] sameLocation(String s) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(
"M:/NetBeans Projects/MovieList/src/MovieInfo.txt"));
String line = "";
List<String> al = new ArrayList<String>();
if (s != null) {
while ((line = br.readLine()) != null) {
for (int i = 0; i < 6; i++) { // <-- Why 6?
al.add(line);
}
}
}
if (al.size() > 0) {
String [] out = new String[al.size()];
return al.toArray(out);
} else {
return null;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.