Файловая машина выдает какое-то найденное исключение в классе java

#java #event-handling #fileoutputstream

Вопрос:

Это код для класса транзакций в моем проекте, класс должен получать значение от пользователя и получать подробную запись/отчет о пациенте в file.txt но, похоже, он работает неправильно, и если класс выполняется, появляется диалоговое окно «Сумма не может быть 0 или отрицательной», даже если выполняются условия.

  import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException;  public class Transaction extends JFrame implements ActionListener {   private static final long serialVersionUID = 1L;  Container container = getContentPane();  String pname = "";  int page = 0;  String speciality = "";  float amt = 0;  int flag = 0;  int rating =0;  String roomCategory="";  String treatment = "";    String filename = "";  String record="";   private final JLabel transactionDetailsLabel = new JLabel("Transaction Details");   JLabel baseCostLabel = new JLabel("Base Amount :");  JTextField baseCostTextField = new JTextField();   JLabel taxLabel = new JLabel("Service Tax :");  JLabel taxValueLabel = new JLabel("5%");   JLabel gstTaxLabel = new JLabel("GST Tax :");  JLabel gstValueTaxLabel = new JLabel("18%");   JLabel totalAmt = new JLabel("Gross Payable Amt :");  JLabel totalAmtLabel = new JLabel("");   JButton generateBillButton = new JButton("Generate amp; Save Bill");  JButton clearButton = new JButton("Clear");  Transaction(String pname, int page, String pspeciality , int rating, String treatment, String roomCategory) {   this.pname = pname;  this.page = page;  this.speciality = pspeciality;  this.rating = rating;  this.roomCategory = roomCategory;  this.treatment = treatment;    setLayoutManager();  setLocationAndSize();  addComponentsToContainer();  addActionEvent();   }   public void setLayoutManager() {  container.setLayout(null);  }   public void setLocationAndSize() {   transactionDetailsLabel.setFont(new Font("Arial", Font.PLAIN, 26));  transactionDetailsLabel.setBounds(280, 30, 250, 70);   baseCostLabel.setFont(new Font("Arial", Font.PLAIN, 22));  baseCostLabel.setBounds(164, 150, 200, 30);  baseCostTextField.setFont(new Font("Arial", Font.PLAIN, 22));  baseCostTextField.setBounds(464, 150, 200, 30);   taxLabel.setFont(new Font("Arial", Font.PLAIN, 22));  taxLabel.setBounds(164, 200, 200, 30);  taxValueLabel.setFont(new Font("Arial", Font.PLAIN, 22));  taxValueLabel.setBounds(464, 200, 200, 30);   gstTaxLabel.setFont(new Font("Arial", Font.PLAIN, 22));  gstTaxLabel.setBounds(164, 250, 200, 30);  gstValueTaxLabel.setFont(new Font("Arial", Font.PLAIN, 22));  gstValueTaxLabel.setBounds(464, 250, 200, 30);   totalAmt.setFont(new Font("Arial", Font.PLAIN, 22));  totalAmt.setBounds(164, 300, 200, 30);  totalAmtLabel.setFont(new Font("Arial", Font.PLAIN, 22));  totalAmtLabel.setBounds(464, 300, 200, 30);  totalAmtLabel.setVisible(false);   generateBillButton.setFont(new Font("Arial", Font.PLAIN, 20));  generateBillButton.setBounds(175, 350, 275, 30);   clearButton.setFont(new Font("Arial", Font.PLAIN, 20));  clearButton.setBounds(500, 350, 131, 30);    this.setTitle("Transaction Page");  this.setVisible(true);  this.setBounds(10, 10, 832, 551);  this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);  this.setResizable(false);  Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();  int w = this.getSize().width;  int h = this.getSize().height;  int x = (dim.width - w) / 2;  int y = (dim.height - h) / 2;  this.setLocation(x, y);   }   public void addComponentsToContainer() {  container.add(baseCostLabel);  container.add(baseCostTextField);  container.add(taxLabel);  container.add(taxValueLabel);  container.add(gstTaxLabel);  container.add(gstValueTaxLabel);  container.add(totalAmt);  container.add(totalAmtLabel);  container.add(generateBillButton);  container.add(clearButton);  getContentPane().add(transactionDetailsLabel);  }   public void addActionEvent() {  generateBillButton.addActionListener(this);  clearButton.addActionListener(this);  }   public float getAmount() {   try {  amt = Integer.parseInt(baseCostTextField.getText().trim());  if (amt gt; 0 amp;amp; pname!="") {  amt = (float) (amt   amt * 0.05   amt * 0.18);  String a = String.valueOf(amt);  totalAmtLabel.setText(a);  totalAmtLabel.setVisible(true);  flag = 1;    this.record = "Patient Name: "   pname   "rn"   "Patient Age: "   page   "rn"   "Speciality Treatment: "    speciality   "rn"   "Treatment Category: "   treatment   "rn"   "Severitry Rating: "   rating   "rn"   "Room Category: "   roomCategory   "rn"   "Total Bill Amt: "   amt   "rn"   "----------------------------";    this.filename = pname   "_"   page   ".txt";    } else  JOptionPane.showMessageDialog(null, "Amount Cannot Be 0 or Negative");   }   catch (NumberFormatException e1) {  JOptionPane.showMessageDialog(this, "Check Details! Enter properly.");   }  return amt;  }   @Override  public void actionPerformed(ActionEvent e) {    if (e.getSource() == generateBillButton) {  this.getAmount();    if(pname!="" amp;amp; amtgt;0)  {  JOptionPane.showMessageDialog(null, "Record Saved with amt: "   amt);  new HomePage();  dispose();  }    try {  FileWriter writer = new FileWriter(filename, true);  BufferedWriter bufferedWriter = new BufferedWriter(writer);    bufferedWriter.write(record);  bufferedWriter.newLine();  bufferedWriter.close();    } catch (IOException e2) {  // TODO Auto-generated catch block  e2.printStackTrace();  }  }   if (e.getSource() == clearButton) {  baseCostTextField.setText("");  totalAmtLabel.setText("");  }    }   public static void main(String[] args) {  @SuppressWarnings("unused")  Transaction add_transaction_frame = new Transaction("A", 58, "Dental",7 , "Fracture","ICU");   }  }   

Он продолжает выбрасывать исключение FileNotFoundException

 Accepted Entry 4 java.io.FileNotFoundException:   at java.base/java.io.FileOutputStream.open0(Native Method)  at java.base/java.io.FileOutputStream.open(FileOutputStream.java:293)  at java.base/java.io.FileOutputStream.lt;initgt;(FileOutputStream.java:235)  at java.base/java.io.FileOutputStream.lt;initgt;(FileOutputStream.java:155)  at java.base/java.io.FileWriter.lt;initgt;(FileWriter.java:82)  at Transaction.actionPerformed(Transaction.java:171)  at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)  at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)  at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)  at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)  at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)  at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)  at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)  at java.desktop/java.awt.Component.processEvent(Component.java:6391)  at java.desktop/java.awt.Container.processEvent(Container.java:2266)  at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)  at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)  at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)  at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)  at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)  at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)  at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)  at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)  at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)  at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)  at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)  at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)  at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)  at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)  at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)  at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)  at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)  at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)  at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)  at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)  at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)  at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)  at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)  at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)  at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)  at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)  

Please Help me out here to understand excatly where and what mistake am I doing and what should I do ?