更改静态变量的值

时间:2020-07-08 17:07:48

标签: java date static-variables

我想设置monthBtn的变量,并通过调用一个函数来更改月份的变量。

private static String monthBtn;

    public static String getCurrentMonth() {
        int month = Calendar.getInstance().get(Calendar.MONTH);
        String monthBtn= "//*[@text='"+month+"']";
        System.out.println(yearBtn);
        return monthBtn;
    }
    public static void main(String[] args) {
        getCurrentMonth();
        System.out.println("Xpath Year ="+monthBtn);
    }

当我运行这段代码时,变量monthBtn的值返回空值,但我的期望条件是//*[@text='07']

3 个答案:

答案 0 :(得分:2)

我发现您的代码存在3个问题。

  1. Calendar.get(MONTH)返回的“月”不是数字月,而是Calendar类中定义的常量之一。例如,对于JULY月份,它返回if df.columns[0] != "colA": # Check first if column name is incorrect. # Get the first column of data: first_col = df[df.columns[0]] # Identify the row index where the value equals the column name: header_row_index = first_col.loc[first_col == "colA"].index[0] # Grab the column names: column_names = df.loc[header_row_index] # Reset the df to start below the new header row, and rename the columns: df = df.loc[header_row_index+1:, :] df.columns = column_names 。理想情况下,您应该迁移到使用6中定义的现代类,例如LocalDate,它们不会表现出令人惊讶的方式。
  2. 格式化。 java.time没有前导零。但是您可以使用int对它进行零填充。
  3. 可变的可见性。您要声明一个本地String.format变量,该变量将隐藏具有相同名称的静态变量。

您可以通过将方法中的代码更改为以下方式来解决这些问题:

monthBtn

答案 1 :(得分:0)

private static String monthBtn;

public static String getCurrentMonth() {
    int month = Calendar.getInstance().get(Calendar.MONTH);
    monthBtn= "//*[@text='"+month+"']"; //you should assign value to the class member, in your code you were declaring local variable.
    System.out.println(yearBtn);
    return monthBtn;
}
public static void main(String[] args) {
    String str = getCurrentMonth(); //you should store the value returned in some variable
    System.out.println("Xpath Year ="+str); //here you were referring to the class member `monthBtn` variable, which is null, and now you take the local str value.
}

我希望您现在了解为什么获得null。您有局部变量,返回值getCurrentMonth()不会存储在任何地方。

答案 2 :(得分:-1)

如下所示更新您的代码。您正在创建具有相同名称的本地变量,而不是将值分配给静态变量。另外,如果您期望it Calender.MONTH可以提供电流,则不是这样。由于月份从0开始。因此,如果当前月份为7月,您将获得6而不是7

private static String monthBtn;

public static String getCurrentMonth() {
    int month = Calendar.getInstance().get(Calendar.MONTH);
    monthBtn= "//*[@text='"+month+"']";
    return monthBtn;
}
public static void main(String[] args) {
    getCurrentMonth();
    System.out.println("Xpath Year ="+monthBtn);
}