簡體   English   中英

運行此代碼時,我得到了一個不能格式化給定對象的數字異常。 不知道怎么了

[英]I'm getting a cannot format given object as number exception when I run this code. Not sure what's wrong

我是Java的新手,正在運行此代碼以顯示數據庫(日志)中一個表的內容。 函數getData將ResultSet轉換為2D字符串數組並返回它。 此功能對於所有其他查詢都正常工作。 在我的數據庫中,時間戳也是時間戳類型的。 那是問題所在嗎?

package stock;

public class ViewTrans extends javax.swing.JFrame {


public ViewTrans() {
    initComponents();
    Login l=new Login();
    String uname=l.getUsername();
    dbconnect db=new dbconnect();
    String str[][]=db.getData("select SName,Amount,Value,TimeStamp,Operation,Brokerage from logs where UserName='"+uname+"'");
    for(int i=0;i<10;i++)

    {
        for(int j=0;j<5;j++)
        {
            ltable.setValueAt(str[i][j],i,j);

        }
    }
}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    ltable = new javax.swing.JTable();
    homebutton = new javax.swing.JButton();
    viewaccbutton = new javax.swing.JButton();
    viewcurrstockbutton = new javax.swing.JButton();
    ebutton = new javax.swing.JButton();
    jLabel1 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    ltable.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null}
        },
        new String [] {
            "Company Name", "No of Shares", "Value of Share", "TimeStamp", "Operation", "Brokerage"
        }
    ) {
        Class[] types = new Class [] {
            java.lang.String.class, java.lang.Integer.class, java.lang.Double.class, java.lang.Object.class, java.lang.String.class, java.lang.Double.class
        };

        public Class getColumnClass(int columnIndex) {
            return types [columnIndex];
        }
    });
    jScrollPane1.setViewportView(ltable);

    homebutton.setText("Home");
    homebutton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            homebuttonActionPerformed(evt);
        }
    });

    viewaccbutton.setText("View Account");
    viewaccbutton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            viewaccbuttonActionPerformed(evt);
        }
    });

    viewcurrstockbutton.setText("View Current Stock");
    viewcurrstockbutton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            viewcurrstockbuttonActionPerformed(evt);
        }
    });

    ebutton.setText("Exit");
    ebutton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ebuttonActionPerformed(evt);
        }
    });

    jLabel1.setText("Your Transactions:");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(20, 20, 20)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jLabel1)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 497, javax.swing.GroupLayout.PREFERRED_SIZE)))
        .addGroup(layout.createSequentialGroup()
            .addGap(49, 49, 49)
            .addComponent(homebutton)
            .addGap(36, 36, 36)
            .addComponent(viewaccbutton)
            .addGap(28, 28, 28)
            .addComponent(viewcurrstockbutton)
            .addGap(33, 33, 33)
            .addComponent(ebutton))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap(13, Short.MAX_VALUE)
            .addComponent(jLabel1)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 191, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(45, 45, 45)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(viewaccbutton)
                .addComponent(viewcurrstockbutton)
                .addComponent(homebutton)
                .addComponent(ebutton))
            .addGap(82, 82, 82))
    );

    pack();
}// </editor-fold>                        

private void homebuttonActionPerformed(java.awt.event.ActionEvent evt) {                                           
   HomePage h=new HomePage();
   h.setVisible(true);
   dispose();
}                                          

private void ebuttonActionPerformed(java.awt.event.ActionEvent evt) {                                        
   dispose();
}                                       

private void viewcurrstockbuttonActionPerformed(java.awt.event.ActionEvent evt) {                                                    
   ViewStock vs=new ViewStock();
   vs.setVisible(true);
   dispose();
}                                                   

private void viewaccbuttonActionPerformed(java.awt.event.ActionEvent evt) {                                              
   ViewAccount h=new ViewAccount();
   h.setVisible(true);
   dispose();
}                                             


public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new ViewTrans().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton ebutton;
private javax.swing.JButton homebutton;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable ltable;
private javax.swing.JButton viewaccbutton;
private javax.swing.JButton viewcurrstockbutton;
// End of variables declaration                   
}

我收到以下錯誤:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Cannot format given Object as a Number
    at java.text.DecimalFormat.format(DecimalFormat.java:505)
    at java.text.Format.format(Format.java:157)
    at javax.swing.plaf.synth.SynthTableUI$SynthTableCellRenderer.configureValue(SynthTableUI.java:803)
    at javax.swing.plaf.synth.SynthTableUI$SynthTableCellRenderer.getTableCellRendererComponent(SynthTableUI.java:790)
    at javax.swing.JTable.prepareRenderer(JTable.java:5736)
    at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:684)
    at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:581)
    at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:365)
    at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:276)
    at javax.swing.JComponent.paintComponent(JComponent.java:778)
    at javax.swing.JComponent.paint(JComponent.java:1054)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JViewport.paint(JViewport.java:731)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5226)
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1529)
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1452)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1249)
    at javax.swing.JComponent.paint(JComponent.java:1040)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
    at java.awt.Container.paint(Container.java:1967)
    at java.awt.Window.paint(Window.java:3877)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:819)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
    at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

這很簡單。 您要告訴數據交換表各列分別包含一個字符串,一個整數,一個Double等:

public Class getColumnClass(int columnIndex) {
        return types [columnIndex];
    }

但是事實並非如此,因為這是您填充表模型的方式:

String str[][]=db.getData("select SName,Amount,Value,TimeStamp,Operation,Brokerage from logs where UserName='"+uname+"'");
for(int i=0;i<10;i++) {
    for(int j=0;j<5;j++) {
        ltable.setValueAt(str[i][j],i,j);
    }
}

因此,每個單元格實際上都包含一個字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM