全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1491
推到 Plurk!
推到 Facebook!

有關 exception

尚未結案
chenglovebun
一般會員


發表:15
回覆:16
積分:6
註冊:2004-10-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-02 02:32:54 IP:24.47.xxx.xxx 未訂閱
A Pay Check Program Write a class PayCheck that uses dialog boxes to compute the total gross pay of an hourly wage worker. The program should use input dialog boxes to get the number of hours worked and the hourly pay rate from the user. The program should use a message dialog to display the total gross pay. The pay calculation should assume the worker earns time and a half for overtime (for hours over 40). 以上是題目 我寫的程式碼 /* PayCheck.java Author : cheng-yuh,wu design a payroll system */ import javax.swing.JOptionPane; public class PayCheck { public static void main (String [] args) { String numStr, result ,st ; int again; double mon,num; double a=40.0; do { numStr = JOptionPane.showInputDialog ("Enter number of hours you work: "); st = JOptionPane.showInputDialog ("Enter your rate per hour : "); num = Double.parseDouble(numStr); mon = Double.parseDouble(st); if (num <=a) { result = "your pay check is " num*mon " dollars"; } else{ result = "your pay check is " (mon*a (num-a)*1.5*mon) " dollars";} JOptionPane.showMessageDialog (null, result); again = JOptionPane.showConfirmDialog (null, "try again?"); } while (again == JOptionPane.YES_OPTION); } } 請各位高手提供意見 如果我想要驗證輸入的是不是數字也就是說只能輸入數字該如何做呢 (exception)
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-03 08:54:00 IP:61.56.xxx.xxx 未訂閱
參考拙作: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=50354 末尾第二段有略述 你可以用:
try{
   ...
  double dValue= Double.parseDouble(jtext.getText());
   ...
}catch(java.lang.NumberFormatException nfe){
   //alert一下,user您打錯了.
}
或是:如果你可以取得那個輸入物件的Text Filed的話,直接把事件攔截下來處理
  ....
  Jtext.addKeyListener(new myKeyHandler());
  ...
  ...
  class myKeyHandler extends KeyAdapter{
    public void keyTyped(java.awt.event.KeyEvent e){
        if(e.getKeyChar()=='1'.....){
           //看看一下keyChar是不是介於0~9或是-,".',是的話,不用處理
         }else{
             e.consume();//事件取消(大事化小,小事化無)
         }    
    } 
        
  }
或是實作InputVerifier.verify的方法,請參考 http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/InputVerifier.html
chenglovebun
一般會員


發表:15
回覆:16
積分:6
註冊:2004-10-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-03 13:04:38 IP:24.47.xxx.xxx 未訂閱
請問try{ ... double dValue= Double.parseDouble(jtext.getText()); ... }catch(java.lang.NumberFormatException nfe){ //alert一下,user您打錯了. } 此 (jtext.getText())中的jtext 代表何物
chenglovebun
一般會員


發表:15
回覆:16
積分:6
註冊:2004-10-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-03 13:47:21 IP:24.47.xxx.xxx 未訂閱
/* PayCheck.java Author : cheng-yuh,wu design a payroll system */ import javax.swing.JPanel; import java.awt.*; import javax.swing.JOptionPane; import java.io.IOException; public class PayCheck1 { public static void main (String [] args) { String numStr, result ,st ; int again; double mon,num; double a=40.0; do { numStr = JOptionPane.showInputDialog ("Enter number of hours you work: "); st = JOptionPane.showInputDialog ("Enter your rate per hour : "); num = Double.parseDouble(numStr); mon = Double.parseDouble(st); try{ double doubleValue= Double.parseDouble(Jtext.getText()); } catch(java.lang.NumberFormatException nfe){ System.out.println("wrong number"); } if (num <=a) { result = "your pay check is " num*mon " dollars"; } else{ result = "your pay check is " (mon*a (num-a)*1.5*mon) " dollars";} JOptionPane.showMessageDialog (null, result); again = JOptionPane.showConfirmDialog (null, "try again?"); } while (again == JOptionPane.YES_OPTION); } } 可否幫我看看try catch 那裡錯了
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-03 14:15:56 IP:211.23.xxx.xxx 未訂閱
請把你的:
   .....
    .....
  num = Double.parseDouble(numStr);
  mon = Double.parseDouble(st);
try{      double doubleValue= Double.parseDouble(Jtext.getText());    }catch(java.lang.NumberFormatException nfe){
   System.out.println("wrong number");
}
   ...
   ...
------------------------------------------------
改成:
  ......
   ......
dobule  num = 0;
double  mon = 0;    try{
  num = Double.parseDouble(numStr);
  mon = Double.parseDouble(st);    }catch(java.lang.NumberFormatException nfe){
   System.out.println("wrong number");
}
   .....
chenglovebun
一般會員


發表:15
回覆:16
積分:6
註冊:2004-10-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-03 15:04:41 IP:24.47.xxx.xxx 未訂閱
改過後可以complier 和 run 但我試著輸入英文字母 但確沒抓到catch 而是重覆之前run 過的值
chenglovebun
一般會員


發表:15
回覆:16
積分:6
註冊:2004-10-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-03 15:09:19 IP:24.47.xxx.xxx 未訂閱
對不起 我的意思市說 如何把錯勿訊息秀在對話框給user知道呢 謝謝
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-04 10:46:13 IP:61.64.xxx.xxx 未訂閱
try{
   ....
  ....
}catch(java.lang.NumberFormatException nfe){
   //System.out.println("wrong number");
      JOptionPane.showMessageDialog(
        null,"Your Message","Message Title",JOptionPane.WARNING_MESSAGE
      );
 return;
 //or...return the flag of fail,notify system to re-do this process    }
chenglovebun
一般會員


發表:15
回覆:16
積分:6
註冊:2004-10-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-10-12 02:07:23 IP:198.105.xxx.xxx 未訂閱
謝謝妳的教導受益良多
chenglovebun
一般會員


發表:15
回覆:16
積分:6
註冊:2004-10-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-10-12 02:13:41 IP:198.105.xxx.xxx 未訂閱
請問重那裡給答題者分數啊
系統時間:2024-05-09 9:04:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!