我写了一个小程序,用户输入分钟,程序显示用户输入的当前日期和时间+分钟。
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 :(得分:1)
检查sample.getMinutes()
返回的字符串是否为数字。它必须是没有任何空格才能被解析的数字,否则您将获得NumberFormatException
。
答案 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);
}
}
输出显示为:
当前日期和时间:2012年6月12日星期二15:57:55 IST 2012
添加日期和时间分钟:2012年6月12日星期二16:54:55 IST 2012年
在这里,分钟“57”被添加到日历中,时间向前移动了“30”分钟。这就是你的结果(添加分钟的日期和时间)。
用户输入分钟。
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”变量,它将为压延机添加这么多分钟。
输出将显示为:
当前日期和时间:2012年6月12日星期二16:07:55 IST 2012
添加分钟的日期和时间:2012年6月12日星期二16:37:55
如果你想设置分钟,那么在“cal.add”中使用“set”而不是“add”。
希望这能解决您的问题 问候。
答案 2 :(得分:0)
您遇到的问题是空字符串不是有效整数。您的应用程序应该捕获异常,并设置合理的默认值。
答案 3 :(得分:0)
""
是一个空字符串,在任何情况下都无法将其解析为有效整数
答案 4 :(得分:0)
java.lang.NumberFormatException:对于输入字符串:“”
无法将空字符串解析为数字。
您需要先检查它(使用String#length()或StringUtils#isBlank())并确定如何处理此情况(例如将其视为零)。
答案 5 :(得分:0)
java.lang.NumberFormatException:对于输入字符串:“”
好像你从未设置分钟字符串
答案 6 :(得分:0)
java.lang.NumberFormatException:对于输入字符串:“”
输入字符串“”无法转换为有效的整数。
在使用Integer.parseInt之前,确保通过以下方式获取整数。
1.提供javascript验证以检查int
或/和
2.提供服务器端验证以检查非整数字符串
答案 7 :(得分: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));
答案 8 :(得分:0)
这里没有什么不寻常的。阅读parseInt() and valueOf的java文档,其中明确指出NumberFormatException
不包含String
时会引发parsable integer
。 empty string ""
不是可解析的int。
由您决定如何处理抛出NumberFormatException
的情况。