JBTALKS.CC

标题: [问题]Java try catch的问题,没有erro,但程式跑太快了,跟我想的完全不一样>< [打印本页]

作者: natgnah    时间: 2009-5-29 12:31 PM
标题: [问题]Java try catch的问题,没有erro,但程式跑太快了,跟我想的完全不一样><
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class A1 extends JFrame
{
    private JButton Divede = new JButton ("Divede");
        private JTextField number1 =new JTextField(8);
        private JTextField number2 =new JTextField(8);
        private JTextArea Result = new JTextArea();
   
    public A1()
    {
            setLayout(new GridLayout(2, 6, 10, 10));
           
            JPanel p1 = new JPanel(new GridLayout(1,6,5,5));
            JPanel p2 = new JPanel(new FlowLayout(FlowLayout.CENTER,5,5));
           
                p1.add (new JLabel("number1:"));
                p1.add (number1);
                p1.add (new JLabel("number2:"));
                p1.add (number2);
                p1.add (new JLabel("Result:"));
                p1.add (Result);
                p2.add(Divede);
                add(p1,BorderLayout.CENTER);
            add(p2,BorderLayout.SOUTH);
            ActionListener listener = new OKListener();
            Divede.addActionListener(listener);
            Result.setEditable(false);
    }

    public static void main(String[] args)
    {
                A1 frame = new A1();
                    frame.setTitle("Divede");
                    frame.setSize(400, 250);
                    frame.setLocationRelativeTo(null);
                    frame.setVisible(true);
                 frame.setDefaultCloseOperation(
                      JFrame.EXIT_ON_CLOSE);
    }
   
     class OKListener implements ActionListener
           {
                  private String text;
                  private double num;
                  private double num1;
                  private double num2;

            public void actionPerformed(ActionEvent e)
            {
                          if(e.getSource() == Divede)
                            {
                                    num1 = Double.parseDouble(number1.getText());
                                    num2 = Double.parseDouble(number2.getText());

                                            try
                                            {
                                                 num = num1 / num2;
                                                 text = Double.toString(num);
                                                 Result.setText(text);
                                         }
                                        
                                         catch(ArithmeticException n)
                                         {
                                                 System.out.println("Please Enter Number.");
                                         }
                                        
                                         finally
                                         {
                                                 System.exit(0);
                                         }
                            }
            }
           }
}

没有erro出现了,但是程式跑了就马上关><

[ 本帖最后由 natgnah 于 2009-5-31 10:39 PM 编辑 ]
作者: Super-Tomato    时间: 2009-5-29 04:07 PM
原帖由 natgnah 于 2009-5-29 12:31 PM 发表
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class A1 extends JFrame
{
    private JButton Divede = new JButton ("Divede");
        private JTextField number1 =new JTextField(8);
        private JTextField number2 =new JTextField(8);
        private JTextArea Result = new JTextArea();
   
    public A1()
    {
            setLayout(new GridLayout(2, 6, 10, 10));
           
            JPanel p1 = new JPanel(new GridLayout(1,6,5,5));
            JPanel p2 = new JPanel(new FlowLayout(FlowLayout.CENTER,5,5));
           
                p1.add (new JLabel("number1:"));
                p1.add (number1);
                p1.add (new JLabel("number2:"));
                p1.add (number2);
                p1.add (new JLabel("Result:"));
                p1.add (Result);
                p2.add(Divede);
                add(p1,BorderLayout.CENTER);
            add(p2,BorderLayout.SOUTH);
            ActionListener listener = new OKListener();
            Divede.addActionListener(listener);
            Result.setEditable(false);
    }

    public static void main(String[] args)
    {
                A1 frame = new A1();
                    frame.setTitle("Divede");
                    frame.setSize(400, 250);
                    frame.setLocationRelativeTo(null);
                    frame.setVisible(true);
                 frame.setDefaultCloseOperation(
                      JFrame.EXIT_ON_CLOSE);
    }
   
     class OKListener implements ActionListener
           {
                  private String text;
                  private int num;
                  private int num1;
                  private int num2;

            public void actionPerformed(ActionEvent e)
            {
                          if(e.getSource() == Result)
                            {
                                     num1 = Integer.parseInt(number1.getText());
                                     num2 = Integer.parseInt(number2.getText());
                                    do
                                    {
                                            try
                                            {
                                                 num = num1 / num2;
                                                 text = Integer.ToSting(num);
                                                 Result.setText(text);
                                         }
                                       
                                         catch(ArithmeticException n)
                                         {
                                                 System.out.println("Please Enter Number.");
                                         }
                                       
                                         finally
                                         {
                                                 System.exit();
                                         }
                                    }
                            }
            }
           }
}

不知道哪里出现问题,请各位帮小弟看看一下。。。



該列出错误訊息,別人才能够知道問題在哪
首先我看到的几个小错误
1.  text = Integer.ToSting(num);
几乎所有的 method 都是小写为開頭,所以應該是 toString 才對

2. System.exit()
没有赋予 parameter, 请參考 http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html
作者: goodhermit95    时间: 2009-5-29 04:50 PM
标题: 回复 #2 Super-Tomato 的帖子

原来JAVA也有像MSDN那样的
作者: natgnah    时间: 2009-5-29 06:18 PM
标题: 回复 #2 Super-Tomato 的帖子
但出现的erro很怪= =
作者: goodhermit95    时间: 2009-5-30 08:22 AM
标题: 回复 #4 natgnah 的帖子
Paste出来看看
作者: natgnah    时间: 2009-5-30 10:20 AM
标题: 回复 #5 goodhermit95 的帖子
上面有paste出来了= =

erro是:
C:\Users\yuan\Desktop\homework\A1.java:75: 需要 while
                }
                 ^
C:\Users\yuan\Desktop\homework\A1.java:77: 非法的表达式开始
        }
        ^
C:\Users\yuan\Desktop\homework\A1.java:77: 需要 ')'
        }
         ^
C:\Users\yuan\Desktop\homework\A1.java:78: 需要 ';'
     }
      ^
C:\Users\yuan\Desktop\homework\A1.java:79: 进行语法解析时已到达文件结尾
}
^
C:\Users\yuan\Desktop\homework\A1.java:80: 进行语法解析时已到达文件结尾
作者: Super-Tomato    时间: 2009-5-30 11:22 AM
do {... } 去掉, 你沒循環為何用 do
作者: natgnah    时间: 2009-5-30 11:28 PM
标题: 回复 #7 Super-Tomato 的帖子
我是参考老师的做法,我还不熟do。。。

去了do之后,还是有erro

erro:
C:\Users\yuan\Desktop\homework\A1.java:61: 找不到符号
符号: 方法 ToSting(int)
位置: 类 java.lang.Integer
                        text = Integer.ToSting(num);
                                      ^
C:\Users\yuan\Desktop\homework\A1.java:72: 无法将 java.lang.System 中的 exit(int) 应用于 ()
                        System.exit();
作者: Super-Tomato    时间: 2009-5-30 11:51 PM
原帖由 natgnah 于 2009-5-30 11:28 PM 发表
我是参考老师的做法,我还不熟do。。。

去了do之后,还是有erro

erro:
C:\Users\yuan\Desktop\homework\A1.java:61: 找不到符号
符号: 方法 ToSting(int)
位置: 类 java.lang.Integer
            ...



請用心看二樓的回答
作者: natgnah    时间: 2009-5-31 03:56 PM
标题: 回复 #9 Super-Tomato 的帖子
谢谢你,我之前没注意到。。。
不过现在又多一个问题,就是程式跑不到,erro已经不见了,但他不会执行程式。。。
作者: duo8668    时间: 2009-5-31 04:42 PM
e.getSource() == Result ,  〈〈〈 result 是什么?JTextField 你给它什么东西 =.=?
你的button不是 private JButton Divede = new JButton ("Divede"); ?
所以应该是  e.getSource()==Divede 对吗?
作者: natgnah    时间: 2009-5-31 05:24 PM
标题: 回复 #11 duo8668 的帖子
真是一语惊醒梦中人,多谢你的提醒,我没注意到这个错误,真是非常感谢你~~
作者: 毛毛小子    时间: 2009-5-31 07:28 PM
Java不是有3种error吗?
最难的是logical error,也就是没有显示错误,可是答案却不是你想要的
作者: natgnah    时间: 2009-5-31 08:42 PM
标题: 回复 #13 毛毛小子 的帖子
哈哈,那个erro,我中到不想中,呵呵呵
作者: goodhermit95    时间: 2009-6-1 10:30 AM
我写过一个C++,一直找不到错误,原来是多了一个 }
n个月后才一望过去就看到
作者: duo8668    时间: 2009-6-1 06:19 PM
finally
                                         {
                                                 System.exit(0);
                                         }

这个拿掉。。。。。
作者: duo8668    时间: 2009-6-1 06:40 PM
看错。。。排谢。。。

               


[ 本帖最后由 duo8668 于 2009-6-1 06:43 PM 编辑 ]
作者: 宅男-兜着走    时间: 2009-6-6 03:44 PM
标题: 回复 #2 Super-Tomato 的帖子
TRY ? END TRY ? 这么这么像 VB的。
作者: Super-Tomato    时间: 2009-6-7 03:57 AM
原帖由 宅男-兜着走 于 2009-6-6 03:44 PM 发表
TRY ? END TRY ? 这么这么像 VB的。



JAVA 原本就有 try ... catch, VB 早期是使用 On Error
作者: davidbilly87    时间: 2009-6-15 07:43 PM
原帖由 natgnah 于 2009-5-29 12:31 发表
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class A1 extends JFrame
{
    private JButton Divede = new JButton ("Divede");
        private JTextField number1 =new JT ...



                                         finally
                                         {

                                                 System.exit(0);
                                        }


是没有 finally的...

直接用 System.exit(0); 我用是这样的

.toString(); <<不是.ToString();

[ 本帖最后由 davidbilly87 于 2009-6-15 07:45 PM 编辑 ]




欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5