Java 加载文件时程序退出
我遇到了一个在加载文件后意外关闭的程序的问题。该程序旨在打开一个文件,宣布错误,并显示所有有效数字 以下是主要代码:Java 加载文件时程序退出,java,swing,file-io,jfilechooser,Java,Swing,File Io,Jfilechooser,我遇到了一个在加载文件后意外关闭的程序的问题。该程序旨在打开一个文件,宣布错误,并显示所有有效数字 以下是主要代码: import java.io.File; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.*; public class Project3 { static TemperatureGUI myGUI; static TemperatureLi
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.*;
public class Project3 {
static TemperatureGUI myGUI;
static TemperatureList myList = new TemperatureList();
static Temperature[] myArray = new Temperature[100];
static int count = 0;
public static void main(String[] args) {
myGUI = new TemperatureGUI();
myGUI.setVisible(true);
}//main
public static boolean isValid(String x) {
Pattern p;
Matcher m;
String pattern = "^-?\\d{1,3}(\\.\\d{1,2})?$";
p = Pattern.compile(pattern);
m = p.matcher(x);
return m.matches();
}//isValid
public static void addMore(Temperature x) {
myList.insert(x); // add new temperature to the list
myArray[count++] = x;
SelectionSort newSorted = new SelectionSort(myArray, count);
myGUI.clear();
for (int i = 0; i < count; i++) {
myGUI.appendList(myList.getList(i).toString());
myGUI.appendArray(newSorted.get(i).toString());
}
}//AddMore
public static void handleFile(File file) {
TextFileInput in = new TextFileInput(file.getAbsolutePath());
String line = in.readLine();
while (line != null) {
//Need to Convert the String to Temperature
//Before being able to put it into the Array and List
try {
if (!isValid(line))
throw new IllegalTemperatureException(line);
float parsedTemp = Float.parseFloat(line);
Temperature temp = new Temperature(parsedTemp);
myArray[count++] = temp;
myList.insert(temp);
} catch (IllegalTemperatureException e) {
JOptionPane.showMessageDialog(null, line + " is not a valid temperature.");
} finally {
line = in.readLine();
}
}//while
SelectionSort sortedArray = new SelectionSort(myArray, count);
//Add it to GUI
for (int i = 0; i < count; i++) {
myGUI.appendArray(sortedArray.get(i).toString());
myGUI.appendList(myList.getList(i).toString());
}
for (int i = 0; i < count; i++) {
System.out.println(myList.getList(i));
}
}
}//class
错误出现在Project3.handleFile中,错误将显示在消息中,但程序不会在窗口上显示数字。它将继续打印到控制台。
在控制台中,仅显示“删除引用时异常”,而不显示任何其他说明问题可能是什么的内容。我的代码中没有显示这一点。为什么程序在显示错误而没有在窗口上显示数字后终止
编辑:
这是温度界面
import java.awt.GridLayout;
导入javax.swing。;
导入java.awt
公共类TemperatureGUI扩展JFrame{
JTextArea txtArray = new JTextArea();
JTextArea txtList = new JTextArea();
JMenuBar menuBar;
JMenuItem item;
public TemperatureGUI(){
//Set Up the Display
setTitle("Sorted Numbers");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200, 444);
setLayout(new GridLayout(1, 2));
setResizable(false);
setLocation(200,200);
createFileMenu();
txtArray.setEditable(false);
txtList.setEditable(false);
JScrollPane scrollArray = new JScrollPane(txtArray);
getContentPane().add(scrollArray);
JScrollPane scrollList = new JScrollPane(txtList);
getContentPane().add(scrollList);
//setVisible(true);
setResizable(false);
}//create GUI
public void createFileMenu(){
menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
FileMenuHandler fmh = new FileMenuHandler(this);
item = new JMenuItem("Open");
item.addActionListener( fmh );
fileMenu.add( item );
fileMenu.addSeparator();
item = new JMenuItem("Add");
item.addActionListener( fmh );
fileMenu.add( item );
setJMenuBar(menuBar);
menuBar.add(fileMenu);
fileMenu.addSeparator();
item = new JMenuItem("Quit");
item.addActionListener(fmh);
fileMenu.add(item);
}//创建菜单
//Separate Methods for Adding New Values
public void appendArray(String tempArray){
txtArray.append(tempArray+"\n");
}
public void appendList(String tempList){
txtList.append(tempList +"\n");
}
//Clean out the GUI for updated list
public void clear(){
txtArray.setText(null);
txtList.setText(null);
}
}//TemperatureGUI
至于输入。我的教授给我们提供了一个TextFileInput类,用于从文本文件中逐行检索数据。
我尝试过断点之类的方法,但似乎没有效果。在这段代码中的一个不寻常的地方有一个分号:
else if (menuName.equals("Quit"));
System.exit(0);
第一个分号结束if语句,so System.exit(0);无论前面发生了什么,都会调用下一行。您如何知道文件引用不是空的,TextFileInput在哪里?哇!非常感谢你!这就是它不断终止的原因!非常感谢你!你不知道一个小小的分号会带来多少麻烦。我不敢相信我忽略了这一点。再次非常感谢!
else if (menuName.equals("Quit"));
System.exit(0);