簡體   English   中英

為什么 monthString 返回 null

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM