안녕하세요 저는 사용자가 학생 데이터베이스에서 ID 또는 이름 (둘 다 고유하다고 가정)을 사용하여 특정 학생을 검색하고 정보를 표시 할 수있는 GUI 프로그램을 만들려고합니다. 이름, ID, GPA 등. 내가 이름이나 학생 정보는 GUI 프로그램의 아래 부분에 표시되어야 ID를 사용하여 검색하면 같은개체 배열을 검색
곳 JLabel의 (학생 정보) 학생 데이터베이스 파일의
샘플
12345 Mark 3.6
72305 Sam 2.8
12945 Chris 3.1
18325 John 2.5
52341 Drake 2.7
98475 Sara 3.8
24536 Robin 3.1
34765 Ted 3.6
23845 Kelly 3.1
이름이나 ID로 검색 할 때 왜 오류가 발생하는지 알 수 없습니까? 또한 검색 후 학생 정보를 표시 할 수 있습니까?
그래 내가 다른 검색 방법 이름 다른 하나는 ID 여기
에 대한 다른 사용하고 내 코드의 프로그램이
과 같은import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class GUIProgram extends JFrame implements ActionListener {
JLabel name, id, stInfo;
JButton clearBtn, searchName, searchID;
JTextField nameTxt, idTxt, nameInfo, idInfo, gpaInfo;
int i ;
String n;
public static void main(String[] args) {
new GUIProgram();
}
public GUIProgram(){
super("GUIProgram");
setTitle("Student Database");
setLayout(new FlowLayout());
setSize(480, 200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel searchPanel = new JPanel(new FlowLayout());
name = new JLabel("Name: ");
nameTxt = new JTextField(10);
id = new JLabel("ID: ");
idTxt = new JTextField(10);
clearBtn = new JButton("Clear");
clearBtn.addActionListener(this);
searchPanel.add(name);
searchPanel.add(nameTxt);
searchPanel.add(id);
searchPanel.add(idTxt);
searchPanel.add(clearBtn);
add(searchPanel,BorderLayout.NORTH);
JPanel centerPanel = new JPanel(new FlowLayout());
searchName = new JButton("Search By Name");
searchID = new JButton("Search By ID");
centerPanel.add(searchName);
centerPanel.add(searchID);
add(centerPanel,BorderLayout.CENTER);
JPanel infoPanel = new JPanel(new FlowLayout());
stInfo = new JLabel("Student Info: ");
nameInfo = new JTextField(10);
nameInfo.setEditable(false);
idInfo = new JTextField(10);
idInfo.setEditable(false);
gpaInfo = new JTextField(10);
gpaInfo.setEditable(false);
infoPanel.add(stInfo);
infoPanel.add(nameInfo);
infoPanel.add(idInfo);
infoPanel.add(gpaInfo);
add(infoPanel,BorderLayout.SOUTH);
searchID.addActionListener(this);
searchName.addActionListener(this);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
Object source = ae.getSource();
if (source == clearBtn);
nameTxt.setText("");
idTxt.setText("");
try{
Scanner file = new Scanner(new File("StudentDB.txt"));
ArrayList<Integer> id = new ArrayList<Integer>();
ArrayList<String> name = new ArrayList<String>();
ArrayList<Double> gpa = new ArrayList<Double>();
while(file.hasNext()){
id.add(file.nextInt());
name.add(file.next());
gpa.add(file.nextDouble());
}
Student [] stList = new Student[9];
for(int i = 0; i < name.size(); i++){
stList[i] = new Student(id.get(i), name.get(i), gpa.get(i));
}
n = nameTxt.getText();
i = Integer.parseInt(idTxt.getText());
try {
if(source == searchName){
linearSearch(stList, n);
}
else if(source == searchID){
binarySearch(stList, i);
}
}catch(InputMismatchException e){
JOptionPane.showMessageDialog(null, "Input Mismatch Exception");
}
}catch(InputMismatchException | FileNotFoundException e){
JOptionPane.showMessageDialog(null, "Input Mismatch Exception");
}
}
/*static final int NONE = -1; // not a legal index
static int linearSearch(int id, Student[] a) {
for (int i = 0; i < a.length; i++) {
if (id == a[i])
return i;
}
return NONE;
}*/
static final int NONE = -1; // not a legal index
static int linearSearch(Student[] a, String name) {
for (int p = 0; p < a.length; p++) {
if (name.equals(a[p]))
return p;
}
return NONE;
}
public static int binarySearch(Student[] a, int x) {
int low = 0;
int high = a.length - 1;
int mid;
while (low <= high) {
mid = (low + high)/2;
if (a[mid].compareTo(x) < 0) {
low = mid + 1;
} else if (a[mid].compareTo(x) > 0) {
high = mid - 1;
} else {
return mid;
}
}
return -1;
}
class Student implements Comparable{
int iDNumber;
String name;
double gpa;
public Student(int iDNumber, String name, double gpa){
this.iDNumber = iDNumber;
this.name = name;
this.gpa = gpa;
}
public int getiDNumber() {
return iDNumber;
}
public void setiDNumber(int newId) {
this.iDNumber = newId;
}
public void setGpa(double newGpa) {
this.gpa = newGpa;
}
public void setName(String newName) {
this.name = newName;
}
public String getName() {
return name;
}
public double getGPA() {
return gpa;
}
public String toString(){
return iDNumber+"\t"+name+"\t"+gpa;
}
public int compareTo(Object o) {
if(o == null) {
throw new NullPointerException();
}
else if(o.getClass()!= getClass()) {
throw new ClassCastException();
}
else if(o.getClass()== getClass()) {
Student st = (Student) o;
return iDNumber - st.getiDNumber();
}
else {
Student st = (Student) o;
return (int) (gpa - st.getGPA());
}
}
} // end of st
class ComparatorId implements Comparator {
public int compare(Object o1, Object o2) {
if(o1 == null | o2 == null)
throw new NullPointerException();
else {
if(!(o1 instanceof Student) | !(o2 instanceof Student))
throw new ClassCastException();
else {
Student st1 = (Student) o1;
Student st2 = (Student) o2;
return st1.getiDNumber() - st2.getiDNumber();
}
}
}
} // End of ComparatorId class
class ComparatorGPA implements Comparator {
public int compare(Object o1, Object o2) {
if(o1 == null | o2 == null)
throw new NullPointerException();
else {
if(!(o1 instanceof Student) | !(o2 instanceof Student))
throw new ClassCastException();
else {
Student st1 = (Student) o1;
Student st2 = (Student) o2;
return Double.compare(st1.getGPA(), st2.getGPA());
// return ((Student) o1).getGPA().compareTo2((Student) o2).getGPA()));
// return (int)(((Student) o1).getGPA()).compareTo2((Double)o1.getGPA());
}
}
}
} // End of ComparatorGPA class
class ComparatorName implements Comparator {
public int compare(Object o1, Object o2) {
return ((Student) o1).getName().compareTo(((Student) o2).getName());
}
}// End of ComparatorName class
}
어떤 오류가 발생합니까? –
ID로 검색하려고 시도 할 때 오류가 발생합니다. "AWT-EventQueue-0"예외 java.lang.NumberFormatException : 입력 문자열의 경우 : "" \t at java.lang.NumberFormatException. forInputString (알 수없는 소스) java.lang.Integer.parseInt (알 수없는 소스) java.lang.Integer.parseInt에서 \t (알 수없는 소스)에서 \t이 Exercise2.actionPerformed (Exercise2.java:116)에서 \t – Ammar
내가 돈 ' 내 검색 방법이 올바르게 작동하는지 실제로 알지 못합니다. – Ammar