线程 "AWT-EventQueue-0" java.lang.NumberFormatException 中的异常:对于输入字符串:"Select Month"
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Select Month"
我试图在 java swing 中开发一个日历应用程序。我有 3 个 JComboBoxes,您可以在其中 select 年、月和日,每次尝试 select 年时我都会收到此错误:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Select Month"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at calendar.Show.itemStateChanged(Show.java:315)
at java.desktop/javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1227)
at java.desktop/javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1279)
at java.desktop/javax.swing.JComboBox.contentsChanged(JComboBox.java:1335)
at java.desktop/javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:123)
//......//
我认为问题出在我的这部分代码中:
jcbyear3.addItemListener (new ItemListener() {
@Override
public void itemStateChanged(ItemEvent arg0) {
int y = Integer.parseInt(String.valueOf(arg0.getItem()));
//String mont= String.valueOf(monthjcb.getSelectedItem());
String monthin = String.valueOf(monthjcb.getSelectedItem());
String mont = monthin == null || monthin.isEmpty() || monthin.equals("Select Month") ? "January" : monthin;
//int d=Integer.parseInt(String.valueOf(dayjcb.getSelectedItem()));
String dayin = String.valueOf(monthjcb.getSelectedItem());
int d = dayin == null || dayin.isEmpty() || dayin.equals("Select Day") ? 1 :Integer.parseInt(dayin) ;
int m=0;
if(mont.equals("January")) {
m=1;
}
else if(mont.equals("February")) {
m=2;
}
//.....//
String[] h=store.search(y, m, d);
if(h[0].equals("0"))
dayarea.setText("No events found");
else if(h[0].equals("1")){
dayarea.setText(h[1]);
}
else if(h[0].equals("2")){
dayarea.setText(h[1]+"\n"+h[2]);
}
else if(h[0].equals("3")){
dayarea.setText(h[1]+"\n"+h[2]+"\n"+h[3]);
}
else {
dayarea.setText(h[1]+"\n"+h[2]+"\n"+h[3]+"\n"+h[4]+"\n"+h[5]);
}
}
});
有人可以帮我解决我的问题吗?
这一行
String monthin = String.valueOf(monthjcb.getSelectedItem());
返回你 "Select Month"
那一天你再次要求相同的 东西(即 monthjcb.getSelectedItem()
):
String dayin = String.valueOf(monthjcb.getSelectedItem());
所以 dayin = "Select Month"
因此你将达到条件:
int d = dayin == null || dayin.isEmpty() || dayin.equals("Select Day") ? 1 :Integer.parseInt(dayin) ;
这部分Integer.parseInt(dayin)
导致 java.lang.NumberFormatException: For input string: “Select Month”
,因为您试图从不包含编码数值的字符串中提取整数。
根据你的注释行,我会说,而不是:
String dayin = String.valueOf(monthjcb.getSelectedItem());
你可能想要:
String dayin = String.valueOf(dayjcb.getSelectedItem();
我试图在 java swing 中开发一个日历应用程序。我有 3 个 JComboBoxes,您可以在其中 select 年、月和日,每次尝试 select 年时我都会收到此错误:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "Select Month"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at calendar.Show.itemStateChanged(Show.java:315)
at java.desktop/javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1227)
at java.desktop/javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1279)
at java.desktop/javax.swing.JComboBox.contentsChanged(JComboBox.java:1335)
at java.desktop/javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:123)
//......//
我认为问题出在我的这部分代码中:
jcbyear3.addItemListener (new ItemListener() {
@Override
public void itemStateChanged(ItemEvent arg0) {
int y = Integer.parseInt(String.valueOf(arg0.getItem()));
//String mont= String.valueOf(monthjcb.getSelectedItem());
String monthin = String.valueOf(monthjcb.getSelectedItem());
String mont = monthin == null || monthin.isEmpty() || monthin.equals("Select Month") ? "January" : monthin;
//int d=Integer.parseInt(String.valueOf(dayjcb.getSelectedItem()));
String dayin = String.valueOf(monthjcb.getSelectedItem());
int d = dayin == null || dayin.isEmpty() || dayin.equals("Select Day") ? 1 :Integer.parseInt(dayin) ;
int m=0;
if(mont.equals("January")) {
m=1;
}
else if(mont.equals("February")) {
m=2;
}
//.....//
String[] h=store.search(y, m, d);
if(h[0].equals("0"))
dayarea.setText("No events found");
else if(h[0].equals("1")){
dayarea.setText(h[1]);
}
else if(h[0].equals("2")){
dayarea.setText(h[1]+"\n"+h[2]);
}
else if(h[0].equals("3")){
dayarea.setText(h[1]+"\n"+h[2]+"\n"+h[3]);
}
else {
dayarea.setText(h[1]+"\n"+h[2]+"\n"+h[3]+"\n"+h[4]+"\n"+h[5]);
}
}
});
有人可以帮我解决我的问题吗?
这一行
String monthin = String.valueOf(monthjcb.getSelectedItem());
返回你 "Select Month"
那一天你再次要求相同的 东西(即 monthjcb.getSelectedItem()
):
String dayin = String.valueOf(monthjcb.getSelectedItem());
所以 dayin = "Select Month"
因此你将达到条件:
int d = dayin == null || dayin.isEmpty() || dayin.equals("Select Day") ? 1 :Integer.parseInt(dayin) ;
这部分Integer.parseInt(dayin)
导致 java.lang.NumberFormatException: For input string: “Select Month”
,因为您试图从不包含编码数值的字符串中提取整数。
根据你的注释行,我会说,而不是:
String dayin = String.valueOf(monthjcb.getSelectedItem());
你可能想要:
String dayin = String.valueOf(dayjcb.getSelectedItem();