2010-12-13 5 views
-1

안녕하세요 저는 약간의 교과 과정을 수행하는 프로그램에 많은 문제가 있습니다. 순간 내 주요 문제는 다음과 같습니다벡터에 쓰려고 할 때 Null 포인터 예외가 계속 발생/jlist 등에서 벡터 데이터 사용

  1. 이 프로그램은 늘 내가 그것을 위의 오류가 발생으로 savepart() 메소드를 호출하는 savep 버튼을 사용하자.

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at Menu.savepart(Menu.java:511) 
    at Menu.actionPerformed(Menu.java:435) 
    at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed (Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    
  2. 나는 때문에 같은 오류뿐만 아니라하는 JList에 mypart 벡터를 밀어 수없는 것. 여러 참가자를 선택하여 관계 벡터에 입력 할 수 있기를 원합니다.

예 나는 데이터베이스가이 모두를 할 더 나은 것 알고 ...하지만 프로그래밍 과정

public class Menu extends JPanel implements ActionListener { 
    private static final boolean shouldFill = true; 
    private static final boolean shouldWeightX = true; 

    private static String[] dayofthemonth = { "01", "02", "03", "04", "05", "06", "07", "08", "09", 
     "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", 
     "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", 
     "30", "31" }; 
    private static String[] monthoftheyear = { "01", "02", "03", "04", "05", "06", "07", "08", 
     "09", "10", "11", "12" }; 
    private static String[] yearoftheyear = { "2009", "2010", "2011", "2012", "2013", 
     "2014", "2015", "2016", "2017", "2018", "2019", "2020" }; 
    private static String[] hour = { "01", "02", "03", "04", "05", "06", "07", "08", "09", 
     "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", 
     "20", "21", "22", "23" }; 
    private static String[] minute = { "10", "20", "30", "40", "50", "60"}; 
    private static String[] satype = { "Meeting", "Teleconference", "Lunch"}; 
    private JTabbedPane tabbedPane = new JTabbedPane(); 
    static Vector<appointment> myappt = appointment.readFile("appointment.txt"); 
    static Vector<participant> mypart = participant.readFile("participant.txt"); 
    static Vector<relationships> myrel = relationships.readFile("relationships.txt"); 
    private JComboBox day = new JComboBox(dayofthemonth); 
    private JComboBox month = new JComboBox(monthoftheyear); 
    private JComboBox year = new JComboBox(yearoftheyear); 
    private JComboBox shour = new JComboBox(hour); 
    private JComboBox sminute = new JComboBox(minute); 
    private JComboBox dday = new JComboBox(dayofthemonth); 
    private JComboBox dmonth = new JComboBox(monthoftheyear); 
    private JComboBox dyear = new JComboBox(yearoftheyear); 
    private JComboBox dhour = new JComboBox(hour); 
    private JComboBox dminute = new JComboBox(minute); 
    private JComboBox atype = new JComboBox(satype); 
    private JTextField atitletext = new JTextField (40); 
    private static JTextField pfname = new JTextField (30); 
    private static JTextField plname = new JTextField (30); 
    private static JTextField ploc = new JTextField (30); 
    private static JTextField pjtitle = new JTextField (30); 

    private JTextArea adescriptiontext = new JTextArea(5,1); 
    static DefaultListModel model = new DefaultListModel(); 
    JList plist = new JList(model); 

    static int noparticipant; 
    static int noappointment; 
    private final String FORMAT = "dd/MM/yyyy,HH:mm"; 

    public Menu() { 
     GridBagConstraints c = new GridBagConstraints(); 

     ImageIcon icon = createImageIcon("images/middle.gif"); 
     if (shouldFill) { 
      // natural height, maximum width 
      c.fill = GridBagConstraints.HORIZONTAL; 
     } 
     if (shouldWeightX) { 
      c.weightx = 0.5; 
     } 
     // panel1 
     JPanel panel = new JPanel(new GridBagLayout()); 
     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     gbc.gridwidth = 8; 
     gbc.fill = GridBagConstraints.NONE; 
     gbc.anchor = GridBagConstraints.CENTER; 
     gbc.insets = new Insets(0, 0, 0, 0); 
     gbc.weightx = 1; 
     tabbedPane.addTab("Add A New Appointment", panel); 

     // Create the combo box 
     JLabel start = new JLabel("Start Date:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 0; 
     panel.add(start, c); 

     JLabel jl1 = new JLabel("Day:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 1; 
     panel.add(jl1, c); 

     day.setSelectedIndex(0); 
     day.addActionListener(this); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 1; 
     c.gridy = 1; 
     panel.add(day, c); 

     JLabel jl2 = new JLabel("Month:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 3; 
     c.gridy = 1; 
     panel.add(jl2, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 4; 
     c.gridy = 1; 
     panel.add(month, c); 

     JLabel jl3 = new JLabel("Year:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 6; 
     c.gridy = 1; 
     panel.add(jl3, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 7; 
     c.gridy = 1; 
     panel.add(year, c); 

     JLabel jstime = new JLabel("Start Time:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 2; 
     panel.add(jstime, c); 

     JLabel jshour = new JLabel("Start Hour:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 3; 
     panel.add(jshour, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 1; 
     c.gridy = 3; 
     panel.add(shour, c); 

     JLabel jsminute = new JLabel("Start Minute:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 3; 
     c.gridy = 3; 
     panel.add(jsminute, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 4; 
     c.gridy = 3; 
     panel.add(sminute, c); 

     JLabel end = new JLabel("End Date:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 5; 
     panel.add(end, c); 

     JLabel j20 = new JLabel("Day:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 6; 
     panel.add(j20, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 1; 
     c.gridy = 6; 
     panel.add(dday, c); 

     JLabel jl21 = new JLabel("Month:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 3; 
     c.gridy = 6; 
     panel.add(jl21, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 4; 
     c.gridy = 6; 
     panel.add(dmonth, c); 

     JLabel j23 = new JLabel("Year:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 6; 
     c.gridy = 6; 
     panel.add(j23, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 7; 
     c.gridy = 6; 
     panel.add(dyear, c); 

     JLabel jdtime = new JLabel("End Time:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 8; 
     panel.add(jdtime, c); 

     JLabel jdhour = new JLabel("End Hour:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 9; 
     panel.add(jdhour, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 1; 
     c.gridy = 9; 
     panel.add(dhour, c); 

     JLabel jdminute = new JLabel("End Minute:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 3; 
     c.gridy = 9; 
     panel.add(jdminute, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 4; 
     c.gridy = 9; 
     panel.add(dminute, c); 

     JLabel space = new JLabel(" "); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 10; 
     panel.add(space, c); 

     JLabel atitle = new JLabel("Appointment Title:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 12; 
     panel.add(atitle, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 2; 
     c.gridy = 12; 
     panel.add(atitletext, c); 

     JLabel jtype = new JLabel("Appointment Type:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 4; 
     c.gridy = 12; 
     panel.add(jtype, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 6; 
     c.gridy = 12; 
     panel.add(atype, c); 

     JLabel adescription = new JLabel("Appointment Description:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 14; 
     panel.add(adescription, c); 

     c.fill = GridBagConstraints.HORIZONTAL; 
     c.ipady = 40; 
     c.weighty = 1.0; 
     c.gridwidth = 4; 
     c.gridx = 2; 
     c.gridy = 14; 
     panel.add(adescriptiontext, c); 

     JLabel aplist = new JLabel("Participant List:"); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 16; 
     panel.add(aplist, c); 

     populateplist(); 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.ipady = 60; 
     c.weighty = 1.0; 
     c.gridwidth = 4; 
     c.gridx = 2; 
     c.gridy = 16; 
     panel.add(plist, c); 

     JButton savea = new JButton("Save Appointment"); 
     savea.setActionCommand("SaveA"); 
     savea.addActionListener(this); // set this object as the listener 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 6; 
     c.gridy = 20; 
     panel.add(savea, c); // add 'save' button to the panel 

     // pane 2 

     GridBagConstraints p2 = new GridBagConstraints(); 

     if (shouldFill) { 
      // natural height, maximum width 
      c.fill = GridBagConstraints.HORIZONTAL; 
     } 
     if (shouldWeightX) { 
      c.weightx = 0.5; 
     } 
     JPanel panel1 = new JPanel(new GridBagLayout()); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     gbc.gridwidth = 2; 
     gbc.fill = GridBagConstraints.NONE; 
     gbc.anchor = GridBagConstraints.CENTER; 
     gbc.insets = new Insets(5, 5, 5, 5); 
     gbc.weightx = 0.5; 
     tabbedPane.addTab("Add A New Participant", panel1); 

     JLabel partinfo = new JLabel("Enter New Participant Info:"); 
     p2.fill = GridBagConstraints.HORIZONTAL; 
     p2.gridx = 0; 
     p2.gridy = 0; 
     panel1.add(partinfo, p2); 

     JLabel jpfname = new JLabel("Enter First Name"); 
     p2.fill = GridBagConstraints.HORIZONTAL; 
     p2.gridx = 0; 
     p2.gridy = 1; 
     panel1.add(jpfname, p2); 

     p2.fill = GridBagConstraints.HORIZONTAL; 
     p2.gridx = 2; 
     p2.gridy = 1; 
     panel1.add(pfname, p2); 

     JLabel jplname = new JLabel("Enter Last Name"); 
     p2.fill = GridBagConstraints.HORIZONTAL; 
     p2.gridx = 0; 
     p2.gridy = 2; 
     panel1.add(jplname, p2); 

     p2.fill = GridBagConstraints.HORIZONTAL; 
     p2.gridx = 2; 
     p2.gridy = 2; 
     panel1.add(plname, p2); 

     JLabel jpjtitle2 = new JLabel("Enter Location"); 
     p2.fill = GridBagConstraints.HORIZONTAL; 
     p2.gridx = 0; 
     p2.gridy = 4; 
     panel1.add(jpjtitle2, p2); 

     p2.fill = GridBagConstraints.HORIZONTAL; 
     p2.gridx = 2; 
     p2.gridy = 4; 
     panel1.add(ploc, p2); 

     JLabel jpjtitle = new JLabel("Enter Job Title"); 
     p2.fill = GridBagConstraints.HORIZONTAL; 
     p2.gridx = 0; 
     p2.gridy = 6; 
     panel1.add(jpjtitle, p2); 

     p2.fill = GridBagConstraints.HORIZONTAL; 
     p2.gridx = 2; 
     p2.gridy = 6; 
     panel1.add(pjtitle, p2); 

     JButton savep = new JButton("Save Participant"); 
     savep.setActionCommand("SaveP"); 
     savep.addActionListener(this); // set this object as the listener 
     c.fill = GridBagConstraints.HORIZONTAL; 
     c.gridx = 0; 
     c.gridy = 7; 
     panel1.add(savep, c); // add 'save' button to the panel 

     // pane 3 
     JPanel panel2 = new JPanel(new GridBagLayout()); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     gbc.gridwidth = 2; 
     gbc.fill = GridBagConstraints.NONE; 
     gbc.anchor = GridBagConstraints.CENTER; 
     gbc.insets = new Insets(5, 5, 5, 5); 
     gbc.weightx = 0.5; 
     tabbedPane.addTab("Delete an Appointment", panel2); 

     // pane 4 
     JPanel panel3 = new JPanel(new GridBagLayout()); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     gbc.gridwidth = 2; 
     gbc.fill = GridBagConstraints.NONE; 
     gbc.anchor = GridBagConstraints.CENTER; 
     gbc.insets = new Insets(5, 5, 5, 5); 
     gbc.weightx = 0.5; 
     tabbedPane.addTab("Delete Participant", panel3); 

     // pane 5 
     JPanel panel5 = new JPanel(new GridBagLayout()); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     gbc.gridwidth = 2; 
     gbc.fill = GridBagConstraints.NONE; 
     gbc.anchor = GridBagConstraints.CENTER; 
     gbc.insets = new Insets(5, 5, 5, 5); 
     gbc.weightx = 0.5; 
     tabbedPane.addTab("Search", panel5); 

     // Add the tabbed pane to this panel. 
     add(tabbedPane); 

     // The following line enables to use scrolling tabs. 
     tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); 
     // TODO Auto-generated constructor stub 
    } 
    protected static ImageIcon createImageIcon(String path) { 
     java.net.URL imgURL = Menu.class.getResource(path); 
     if (imgURL != null) { 
      return new ImageIcon(imgURL); 
     } else { 
      System.err.println("Couldn't find file: " + path); 
      return null; 
     } 
    } 
    public void actionPerformed(ActionEvent evt) { 
     String strAction = evt.getActionCommand(); 

     if (strAction.equals("SaveA")) { 

      JOptionPane.showMessageDialog(this, "You have saved 'Hello'", 
        "Hello!", JOptionPane.INFORMATION_MESSAGE); 
     } else if (strAction.equals("SaveP")) { 

      savepart(); 

      JOptionPane.showMessageDialog(this, "You have saved 'Hello'", 
        "Hello!", JOptionPane.INFORMATION_MESSAGE); 
     } 
    } 
    public void saveappt() { 
     String ssday; 
     String ssmonth; 
     String ssyear; 
     String sshour; 
     String ssminute; 
     String seday; 
     String semonth; 
     String seyear; 
     String sehour; 
     String seminute; 
     String satitle; 
     String satype; 
     String sadescription; 
     String startdt; 
     String enddt; 
     try{ 
      ssday = (String) day.getSelectedItem(); 
      ssmonth = (String) month.getSelectedItem(); 
      ssyear = (String) year.getSelectedItem(); 
      sshour = (String) shour.getSelectedItem(); 
      ssminute = (String) sminute.getSelectedItem(); 
      seday = (String) dday.getSelectedItem(); 
      semonth = (String) dmonth.getSelectedItem(); 
      seyear = (String) dyear.getSelectedItem(); 
      sehour = (String) dhour.getSelectedItem(); 
      seminute = (String) dminute.getSelectedItem(); 
      satitle = (String) atitletext.getText(); 
      sadescription= (String) adescriptiontext.getText(); 
      satype = (String) atype.getSelectedItem(); 
      startdt = ssday + "/" + ssmonth + "/" + ssyear + "," + sshour + ":" + ssminute; 
      enddt = seday + "/" + semonth + "/" + seyear + "," + sehour + ":" + seminute; 
      Date startdate; 
      Date enddate; 
      ParsePosition pos; 
      pos = new ParsePosition(0); 
      SimpleDateFormat checker = new SimpleDateFormat ("dd/MM/yyyy,hh:mm"); 
      startdate = checker.parse(startdt,pos); 
      ParsePosition pos1; 
      pos1 = new ParsePosition(0); 
      enddate = checker.parse(enddt,pos1); 

      noappointment++; 
      int aid=noappointment; 
      appointment z =new appointment (aid,startdate,enddate,satitle,sadescription,satype); 
      myappt.add(z); 
      makestore(); 

     }catch(Exception e){ 

     } 
    } 

    public static void savepart() { 
     String sfname; 
     String slname; 
     String sloc; 
     String sjtitle; 

     sfname = (String) pfname.getText(); 
     slname = (String) plname.getText(); 
     sloc = (String) ploc.getText(); 
     sjtitle = (String) pjtitle.getText(); 

     // noparticipant++; 
     // int pid=noparticipant; 
     int pid=1; 
     participant z =new participant (pid,sfname,slname,sloc,sjtitle); 
     mypart.add(z); 

    } 

    private static void populateplist() { 
     if(mypart!=null){ 

      model.clear(); 
      //creates an instance of the addressbook object to use to reflect a record in the vector. 
      participant thisparticipant; 
      //loop through each element of the vector - for loop blueprint taken from "Citation.java 
      for (int n = 0; n < mypart.size(); n++){ 
       //equates thisaddress with an element in the vector 
       thisparticipant = (participant) mypart.elementAt(n); 
       // Prints out the entry number and details from the Vector 
       String pname = thisparticipant.firstname +thisparticipant.lastname; 
       model.addElement(pname); 
      } 
     }else{ 
      model.addElement("No Participants Please Add One"); 
     } 
    } 

    /** 
    * Create the GUI and show it. For thread safety, this method should be 
    * invoked from the event dispatch thread. 
    */ 
    private static void createAndShowGUI() { 
     // Create and set up the window. 
     JFrame frame = new JFrame("Appointment System"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     // Add content to the window. 
     frame.add(new Menu(), BorderLayout.CENTER); 

     // Display the window. 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       // Turn off metal's use of bold fonts 
       UIManager.put("swing.boldMetal", Boolean.FALSE); 
       createAndShowGUI(); 
      } 
     }); 
    } 

    private static void makestore(){ 
     appointment thisappointment; // Create an instance of citation to act as a temporary store 
     participant thisparticipant; 
     relationships thisrelationships; 
     try{ 
      // creates a printwriter which outputs to address.txt 
      PrintWriter outFile = new PrintWriter(new BufferedWriter(new FileWriter("appointment.txt"))); 
      //loop through each element of the vector - loop blueprint taken from "Citation.java" 
      for (int n=0; n<myappt.size(); n++) 
      { 
       //points thisaddress at the right element of the vector 
       thisappointment=(appointment)myappt.elementAt(n); 
       outFile.print(thisappointment.appointmentid); 
       outFile.print(";"); 
       outFile.print(" "); 
       outFile.print(thisappointment.startdatetime); 
       outFile.print(";"); 
       outFile.print(" "); 
       outFile.print(thisappointment.enddatetime); 
       outFile.print(";"); 
       outFile.print(" "); 
       outFile.print(thisappointment.appttype); 
       outFile.print(";"); 
       outFile.print(" "); 
       outFile.print(thisappointment.apptdescription); 
       outFile.print(";"); 
       outFile.print(" "); 

      } 
      // closes the output file. 
      outFile.close(); 

      //catches any input/output errors from "Simple File Writing" 
     }catch(IOException e){ 
      System.out.println("An i/o error has occurred ["+e+"]"); 
     } 
     try{ 
      // creates a printwriter which outputs to address.txt 
      PrintWriter outFile = new PrintWriter(new BufferedWriter(new FileWriter("participant.txt"))); 
      //loop through each element of the vector - loop blueprint taken from "Citation.java" 
      for (int n=0; n<mypart.size(); n++) 
      { 
       //points thisaddress at the right element of the vector 
       thisparticipant=(participant)mypart.elementAt(n); 
       outFile.print(thisparticipant.firstname); 
       outFile.print(";"); 
       outFile.print(" "); 
       outFile.print(thisparticipant.lastname); 
       outFile.print(";"); 
       outFile.print(" "); 
       outFile.print(thisparticipant.location); 
       outFile.print(";"); 
       outFile.print(" "); 
       outFile.print(thisparticipant.jobtitle); 
       outFile.print(";"); 
       outFile.print(" "); 

      } 
      // closes the output file. 
      outFile.close(); 

      //catches any input/output errors from "Simple File Writing" 
     }catch(IOException e){ 
      System.out.println("An i/o error has occurred ["+e+"]"); 
     } 
     try{ 
      // creates a printwriter which outputs to address.txt 
      PrintWriter outFile = new PrintWriter(new BufferedWriter(new FileWriter("relationships.txt"))); 
      //loop through each element of the vector - loop blueprint taken from "Citation.java" by 
      for (int n=0; n<myrel.size(); n++) 
      { 
       //points thisaddress at the right element of the vector 
       thisrelationships=(relationships)myrel.elementAt(n); 
       outFile.print(thisrelationships.appointmentid); 
       outFile.print(";"); 
       outFile.print(" "); 
       outFile.print(thisrelationships.participantid); 
       outFile.print(";"); 
       outFile.print(" "); 

      } 
      // closes the output file. 
      outFile.close(); 

      //catches any input/output errors from "Simple File Writing" by 
     }catch(IOException e){ 
      System.out.println("An i/o error has occurred ["+e+"]"); 
     } 
    } 

    //constructs the relationship object and way of creating a record 
    private static class relationships 
    { 
     int participantid; 
     int appointmentid; 
     static int norelationships; 
     relationships(int pid, int aid) 
     { 
      participantid =pid; 
      appointmentid =aid; 
     } 
     public static Vector<relationships> readFile(String fileName) { 
      boolean rexists = (new File(fileName)).exists(); 
      if(rexists){ 

       Vector<relationships> addid = new Vector<relationships>(); 
       try { 
        Scanner scanner = 
         new Scanner(new File(fileName)); 
        scanner.useDelimiter(System.getProperty("line.separator")); 
        while (scanner.hasNext()) { 
         addid.addElement(parseLine(scanner.next())); 
        } 
        scanner.close(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
        System.out.println("Please check your inported text file and change all delimiters to ;"); 
       } 
      } 
      else{ 
       try{ 
        // creates a printwriter which outputs to address.txt 
        PrintWriter outFile = new PrintWriter(new BufferedWriter(new FileWriter("relationships.txt"))); 
        //loop through each element of the vector - loop blueprint taken from "Citation.java" 

        // closes the output file. 
        outFile.close(); 
        //catches any input/output errors from "Simple File Writing" 
       }catch(IOException e){ 
        System.out.println("An i/o error has occurred ["+e+"]"); 
       } 

      } 
      return myrel; 
     } 
     private static relationships parseLine(String line) { 
      Scanner lineScanner = new Scanner(line); 
      try{ 
       lineScanner.useDelimiter("\\s*;\\s*");// Delimiter is 0 or more spaces then a semicolon then zero or more spaces 
       int pid = lineScanner.nextInt(); 
       int aid = lineScanner.nextInt(); 

       relationships c =new relationships (pid,aid); 
       return c; 
      } 
      catch(Exception e){ 
       System.out.println("Please check your relationships text file and change all delimiters to ;"); 
      } 
      return null; 
     } 

    } 
    private static class participant 

    { 
     int participantid; 
     String firstname; 
     String lastname; 
     String location; 
     String jobtitle; 
     ; 
     static int noPrintappt; 

     participant(int pid,String fn, String ln, String loc, String jt) // The constructor 
     { 
      noparticipant++; // count total number of addresses 

      participantid=noparticipant; 
      participantid=pid;// set instance variables 
      firstname=fn; 
      lastname=ln; 
      location=loc; 
      jobtitle=jt; 
     } 

     int printappt() // NB printRef now returns an int 
     { 
      noPrintappt++; // count number of times printref has been called 
      System.out.println ("Participant ID:" + participantid); 
      System.out.println ("Name:" + firstname + lastname); 
      System.out.println ("Location:" + location); 
      System.out.println ("Job Title: " + jobtitle); 

      return noPrintappt; // set the return value for the method 
      // (must be an int, as declared above) 
     } 

     public static Vector<participant> readFile(String fileName) { 
      boolean pexists = (new File(fileName)).exists(); 
      if(pexists){ 
       Vector<participant> addid = new Vector<participant>(); 
       try { 
        Scanner scanner = 
         new Scanner(new File(fileName)); 
        scanner.useDelimiter(System.getProperty("line.separator")); 
        while (scanner.hasNext()) { 
         addid.addElement(parseLine(scanner.next())); 
        } 
        scanner.close(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
        System.out.println("Please check your inported text file and change all delimiters to ;"); 
       } 
      } 
      else{ 
       try{ 
        // creates a printwriter which outputs to address.txt 
        PrintWriter outFile = new PrintWriter(new BufferedWriter(new FileWriter("participant.txt"))); 
        //loop through each element of the vector - loop blueprint taken from "Citation.java" 

        // closes the output file. 
        outFile.close(); 
        //catches any input/output errors from "Simple File Writing" 
       }catch(IOException e){ 
        System.out.println("An i/o error has occurred ["+e+"]"); 
       } 

      } 
      return mypart; 

     } 

     private static participant parseLine(String line) { 
      Scanner lineScanner = new Scanner(line); 
      try{ 
       lineScanner.useDelimiter("\\s*;\\s*");// Delimiter is 0 or more spaces then a semicolon then zero or more spaces 
       int pid = lineScanner.nextInt(); 
       String fn = lineScanner.next(); 
       String ln = lineScanner.next(); 
       String loc = lineScanner.next(); 
       String jt = lineScanner.next(); 

       participant c =new participant (pid,fn,ln,loc,jt); 
       return c; 
      } 
      catch(Exception e){ 
       System.out.println("Please check your participant text file and change all delimiters to ;"); 
      } 
      return null; 
     } 
    } 

    //constructs the appointment object and way of creating a record 
    private static class appointment 

    { 
     int appointmentid; 
     Date startdatetime; 
     Date enddatetime; 
     String appttitle; 
     String apptdescription; 
     String appttype; 

     static int noPrintappt; 

     appointment(int aid,Date sdt, Date edt,String atitle, String adesc, String atype) // The constructor 
     { 
      noappointment++; // count total number of addresses 

      appointmentid=noappointment;// set instance variables 
      aid= appointmentid; 
      startdatetime=sdt; 
      enddatetime=edt; 
      appttitle=atitle; 
      apptdescription=adesc; 
      appttype=atype; 
     } 

     int printappt() // NB printRef now returns an int 
     { 
      noPrintappt++; // count number of times printref has been called 
      System.out.println ("Start Date and Time :" + startdatetime); 
      System.out.println ("End Date and Time :" + enddatetime); 
      System.out.println ("Appointment Type:" + appttype); 
      System.out.println (appttitle +" - "+apptdescription); 

      return noPrintappt; // set the return value for the method 
      // (must be an int, as declared above) 
     } 

     public static Vector<appointment> readFile(String fileName) { 

      boolean aexists = (new File(fileName)).exists(); 
      if(aexists){ 
       Vector<appointment> addid = new Vector<appointment>(); 
       try { 
        Scanner scanner = 
         new Scanner(new File(fileName)); 
        scanner.useDelimiter(System.getProperty("line.separator")); 
        while (scanner.hasNext()) { 
         addid.addElement(parseLine(scanner.next())); 
        } 
        scanner.close(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
        System.out.println("Please check your inported text file and change all delimiters to ;"); 
       } 
      } 
      else{ 
       try{ 
        // creates a printwriter which outputs to address.txt 
        PrintWriter outFile = new PrintWriter(new BufferedWriter(new FileWriter("appointment.txt"))); 
        //loop through each element of the vector - loop blueprint taken from "Citation.java" 
        // closes the output file. 
        outFile.close(); 
        //catches any input/output errors from "Simple File Writing" 
       }catch(IOException e){ 
        System.out.println("An i/o error has occurred ["+e+"]"); 
       } 
      } 
      return myappt; 
     } 

     private static appointment parseLine(String line) { 
      Scanner lineScanner = new Scanner(line); 
      try{ 
       lineScanner.useDelimiter("\\s*;\\s*");// Delimiter is 0 or more spaces then a semicolon then zero or more spaces 
       int aid = lineScanner.nextInt(); 
       String sdt = lineScanner.next(); 
       String edt = lineScanner.next(); 
       String atitle = lineScanner.next(); 
       String adesc = lineScanner.next(); 
       String atype = lineScanner.next(); 
       Date startdate; 
       Date enddate; 
       ParsePosition pos; 
       pos = new ParsePosition(0); 
       SimpleDateFormat checker = new SimpleDateFormat ("dd/MM/yyyy,hh:mm"); 
       startdate = checker.parse(sdt,pos); 
       ParsePosition pos1; 
       pos1 = new ParsePosition(0); 
       enddate = checker.parse(edt,pos1); 

       appointment c =new appointment (aid,startdate,enddate,atitle,adesc,atype); 
       return c; 
      } 
      catch(Exception e){ 
       System.out.println("Please check your appointment text file for date format errors or where ; is not used as a delimiter"); 
      } 
      return null; 
     } 
    } 
} 
+1

음 ... 게시물을 편집하면 코드를 읽을 수 없습니다. – LaGrandMere

+4

코드가 너무 커서 형식을 수정하기 위해 편집 할 수 없습니다. 예외는 NPE가 발생하는 행 번호를 제공합니다. 내 충고는 디버거에서 코드를 열어 그 행을 응시하고 초기화되지 않은 것을 파악하는 것입니다. – duffymo

+0

코드가 읽을 수 있다고해도, 여기 사람들이 읽기/소화하기를 기대하기에는 너무 많은 ** 코드입니다. –

답변

0

participant.readFile 방법에 문제가 있습니다. 문자가 mypart이 아닌 addid 벡터를 반환해야합니다.이 문자는 null입니다.

public static Vector<participant> readFile(String fileName) { 
     boolean pexists = (new File(fileName)).exists(); 
     if (pexists) { 
      Vector<participant> addid = new Vector<participant>(); 
      try { 
       Scanner scanner = new Scanner(new File(fileName)); 
       scanner.useDelimiter(System.getProperty("line.separator")); 
       while (scanner.hasNext()) { 
        addid.addElement(parseLine(scanner.next())); 
       } 
       scanner.close(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       System.out.println("Please check your inported text file and change all delimiters to ;"); 
      } 
     } else { 
      try { 
       // creates a printwriter which outputs to address.txt 
       PrintWriter outFile = new PrintWriter(new BufferedWriter(new FileWriter("participant.txt"))); 
       // loop through each element of the vector - loop blueprint taken from "Citation.java" by Amadeo and 
       // Adam Moore.for G54PRG 

       // closes the output file. 
       outFile.close(); 
       // catches any input/output errors from "Simple File Writing" by Amadeo and Adam Moore.for G54PRG 
      } catch (IOException e) { 
       System.out.println("An i/o error has occurred [" + e + "]"); 
      } 

     } 
     return mypart; //<--- this is null! 
    } 
0

문제는 participant 클래스의 readFile(String fileName) 방법에 있습니다 로컬 변수 addid에 파일에서 값을 추가하지만 null 인 대신 mypart을 반환합니다.

관련 문제