[英]Why is the monthString returning null
我正在解析来自 simpleDateFormat 字符串的“substring-ed”字符串中的一堆整数。 出于某种原因,我一直无法弄清楚 String monthString 不断出现 NULL,我不明白为什么。
我在另一个函数调用中创建了字符串,当我将它传递给下一个函数时,字符串变为 NULL
public class MainMenu extends JFrame implements ActionListener {
private JButton start, highscore, help, stoppen;
private int yearNumber, monthNumber, dayNumber, daysInMonth;
private String monthString, yearString, dayString;
private String timeStamp = new SimpleDateFormat("dd.MM.yyyy").format(Calendar.getInstance().getTime());
public void go(){
setMonthString();
getDayString();
getYearString();
getDayNumber(dayString);
getYearNumber(yearString);
getMonthNumber(monthString);
getDaysInMonth(monthString);
makeThisMonthFolders();
maakComponenten();
maakLayout();
toonFrame();
}
private void makeComponent() {
String timeStamp = new SimpleDateFormat("dd.MM.yyyy").format(Calendar.getInstance().getTime());
String dayString = timeStamp.substring(0,2);
System.out.println("Today is day " + dayNumber + " of the month");
String monthString = timeStamp.substring(3, 5);
System.out.println("Month string: " + monthString);
start = new JButton("Move Folders"){
{
setSize(150, 75);
setMaximumSize(getSize());
}
};
start.addActionListener(this);
}
private String setMonthString(){
String monthString = timeStamp.substring(3, 5);
if(monthString.substring(0,1) == "0"){
System.out.println(monthString.substring(0,1));
}
/*if(monthString.substring(0, 1) == "0"){
monthString = monthString.substring(1);
}*/
return monthString;
}
public int getMonthNumber(String monthString){
System.out.println(monthString);
monthNumber = parseInt(monthString);
return monthNumber;
}
}
Here is the null return from a test and the error codes thrown:
Today is day 0 of the month
Month string: 07
Exception in thread "main" java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:542)
at java.lang.Integer.parseInt(Integer.java:615)
at com.company.MainMenu.getMonthNumber(MainMenu.java:123)
at com.company.MainMenu.go(MainMenu.java:37)
at com.company.Main.main(Main.java:11)
7
null
ERROR AT 123 references:
System.out.println(monthString);
monthNumber = parseInt(monthString); // this line
return monthNumber;
这里你调用了函数getMonthNumber(monthString);
但是你还没有在全球范围内声明它。 您需要声明String monthString = timeStamp.substring(3, 5);
在setMonthString()
,然后您将能够根据需要获取 monthString 值。
我已经在您的示例的示例代码下面发布了,以便您可以更好地理解它。
public class MainMenu extends JFrame implements ActionListener {
private JButton start, highscore, help, stoppen;
private int yearNumber, monthNumber, dayNumber, daysInMonth;
private String yearString, dayString;
private String timeStamp = new SimpleDateFormat("dd.MM.yyyy").format(Calendar.getInstance().getTime());
public void go(){
String monthString = getMonthString();
getDayString();
getYearString();
getDayNumber(dayString);
getYearNumber(yearString);
getMonthNumber(monthString);
getDaysInMonth(monthString);
makeThisMonthFolders();
maakComponenten();
maakLayout();
toonFrame();
}
private void makeComponent() {
String timeStamp = new SimpleDateFormat("dd.MM.yyyy").format(Calendar.getInstance().getTime());
String dayString = timeStamp.substring(0,2);
System.out.println("Today is day " + dayNumber + " of the month");
String monthString = timeStamp.substring(3, 5);
System.out.println("Month string: " + monthString);
start = new JButton("Move Folders"){
{
setSize(150, 75);
setMaximumSize(getSize());
}
};
start.addActionListener(this);
}
private String getMonthString(){
String monthString = timeStamp.substring(3, 5);
if(monthString.substring(0,1) == "0"){
System.out.println(monthString.substring(0,1));
}
/*if(monthString.substring(0, 1) == "0"){
monthString = monthString.substring(1);
}*/
return monthString;
}
public int getMonthNumber(String monthString){
System.out.println(monthString);
monthNumber = parseInt(monthString);
return monthNumber;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.