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())));?
4

9 回答 9

1

检查返回的字符串 fromsample.getMinutes()是否为数字。它必须是一个没有任何空格的数字才能被解析,否则你会得到一个NumberFormatException.

于 2012-03-11T15:14:46.207 回答
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);
        }
    }
    

    输出将显示为:
    Current Date and time:Tue Jun 12 15:57:55 IST 2012
    Date and time with added Minutes : Tue Jun 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”变量,它将向日历添加那么多分钟。

    输出将显示为:
    Current Date and time:Tue Jun 12 16:07:55 IST 2012
    Date and time with added Minutes :Tue Jun 12 16:37:55 IST 2012

如果你想设置分钟,那么在“cal.add”中使用“set”而不是“add”。

希望这能解决您的问题。
问候。

于 2012-06-12T10:43:03.433 回答
0

您遇到的问题是空字符串不是有效的整数。您的应用程序应该捕获异常,并设置一个合理的默认值。

于 2012-02-09T11:51:46.003 回答
0

""是一个空字符串,在任何情况下都无法解析为有效整数

于 2012-02-09T11:52:03.600 回答
0

java.lang.NumberFormatException:对于输入字符串:“”

空字符串不能解析为数字。

您需要先检查它(使用类似 String#length() 或 StringUtils#isBlank())并决定如何处理这种情况(例如将其视为零)。

于 2012-02-09T11:52:07.233 回答
0

java.lang.NumberFormatException:对于输入字符串:“”

好像你从来没有设置分钟字符串

于 2012-02-09T11:52:21.153 回答
0

java.lang.NumberFormatException:对于输入字符串:“”

输入字符串“”无法转换为有效整数。

在使用 Integer.parseInt 之前,请确保通过以下方式获取整数。

1.提供用于检查int的javascript验证

或/和

2.提供用于检查非整数字符串的服务器端验证

另请参阅如何避免 NumberFormatException

于 2012-02-09T11:58:50.380 回答
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));
于 2012-02-09T12:02:21.530 回答
0

这里没有什么不寻常的。阅读parseInt() 和 valueOf的 java 文档,其中明确指出如果 a不包含 a ,NumberFormatException则抛出a 。而且 an不是可解析的 int。Stringparsable integerempty string ""

如何处理NumberFormatException抛出 a 的情况取决于您。

于 2012-02-09T12:12:08.777 回答