2012-02-09 73 views
2

我寫了一個小程序,用戶輸入分鐘數,程序顯示用戶輸入的當前日期和時間+分鐘。無法理解數字格式異常的原因

final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss"; 
final DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US); 

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.MINUTE, Integer.valueOf(sample.getMinutes())); 

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); 
String dt = sdf.format(cal.getTime()); 

System.out.println(" Date and time with added Minutes : " + (dateFormat.parse(dt)); 

樣品

private String minutes; 

//getter and setter 

我得到這個例外

java.lang.NumberFormatException:對於輸入字符串: 「」

我在做什麼這裏錯了嗎? 我應該使用

Integer.parseInt 

Integer.valueOf(Integer.parseInt(sample.getMinutes())));? 
+0

什麼是樣本? NumberFormatException發生是因爲你有一個空字符串'「」,你試圖把它解析爲一個數字,但是一個空字符串不能被理解爲一個數字。 'sample.getMinutes()'返回一個空字符串。 – Jesper 2012-02-09 11:52:09

+0

你有初始化的示例變量? – xyz 2012-02-09 11:52:22

回答

1
  1. 含當前日期和時間。

    public static void main(String[] args) 
    { 
        try 
        { 
         final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss"; 
         final DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US); 
    
         Date sample = new Date(); 
         int iMinutes = 30;//minutes added by the user 
    
         Calendar cal = Calendar.getInstance(); 
    
         cal.add(Calendar.MINUTE, Integer.valueOf(sample.getMinutes())); 
    
         SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); 
         String dt   = sdf.format(cal.getTime()); 
    
         System.out.println("Current Date and time:"+sample); 
         System.out.println("Date and time with added Minutes : " + (dateFormat.parse(dt))); 
        } 
        catch (ParseException ex) 
        { 
         Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex); 
        } 
    } 
    

    的輸出將是顯示爲:
    當前日期和時間:星期二06月12 15點57分55秒IST 2012
    日期和時間與加入分鐘:星期二06月12 16點54分55秒IST 2012
    這裏分鐘「57」被添加到日曆中,並且時間向前移動了「30」分鐘。並且這是您的結果(添加分鐘的日期和時間)。

  2. 用戶輸入分鐘數。

    public static void main(String[] args) 
    { 
        try 
        { 
         final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss"; 
         final DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US); 
    
         int iMinutes = 30;//minutes added by the user 
    
         Calendar cal = Calendar.getInstance(); 
    
         cal.add(Calendar.MINUTE, iMinutes); 
    
         SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); 
         String dt   = sdf.format(cal.getTime()); 
    
         System.out.println("Current Date and time:"+sample); 
         System.out.println("Date and time with added Minutes : " + (dateFormat.parse(dt))); 
        } 
        catch (ParseException ex) 
        { 
         Logger.getLogger(NewMain.class.getName()).log(Level.SEVERE, null, ex); 
        } 
    } 
    

    按你的願望首先你需要從用戶分鐘並分配分鐘的代碼「iMinutes」變量會那麼多分鐘添加到壓延這將工作。

    輸出將被顯示爲:
    當前日期和時間:星期二06月12 16點07分55秒IST 2012
    日期和時間與加入分鐘:星期二06月12 16點37分55秒IST 2012

如果你想設置分鐘,那麼在「cal.add」中使用「set」而不是「add」。

希望這會解決您的問題。
此致敬禮。

0

您遇到的問題是,一個空字符串不是一個有效的整數。您的應用程序應該捕獲異常,並設置合理的默認值。

0

""是一個空字符串,它不能被解析成給定的任何情況

有效的整數
0

java.lang.NumberFormatException:對於輸入字符串:「」

一個空字符串不能解析爲一個數字。你需要首先檢查它(使用像String#length()或者StringUtils#isBlank()),並決定如何處理這種情況(例如將其視爲零)。

0

java.lang.NumberFormatException:對於輸入字符串: 「」

好像你從來沒有設定分鐘字符串

0

java.lang.NumberFormatException:對於輸入字符串: 「」

輸入字符串「」不能轉換爲有效的整數。

在使用Integer.parseInt之前,確保您通過以下方式獲取整數。

1.提供JavaScript驗證檢查INT

或/和

2。爲檢查非整數字符串服務器端驗證

也看到how to avoid NumberFormatException

0

添加檢查的某種:

final String DATE_FORMAT_NOW = "MM/dd/yyyy HH:mm:ss"; 
final DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US); 

Calendar cal = Calendar.getInstance(); 
final String minutes = sample.getMinutes() 
cal.add(Calendar.MINUTE, Integer.valueOf((minutes != null && !minutes.isEmpty()) ? minutes : 0); 

SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); 
String dt = sdf.format(cal.getTime()); 

System.out.println(" Date and time with added Minutes : " + (dateFormat.parse(dt)); 
0

沒有什麼不同尋常這裏。請閱讀java文檔parseInt() and valueOf,其中明確指出如果String不包含parsable integer,則會拋出NumberFormatException。而empty string ""不是可分析的int。

這是由您決定如何處理這種情況下,投擲NumberFormatException

1

檢查從sample.getMinutes()返回的字符串是否是數字。它必須是一個沒有任何空格的數字才能被解析,否則你將得到一個NumberFormatException