参数不匹配且函数范围超出范围。

时间:2014-01-07 10:46:48

标签: java date

我有一个简单的函数,它可以根据特定的格式预测经过的秒数,比如从某个特定日期算起XXXX秒的时间。功能如下:

public static void secondsToNotify(long seconds, String D){
        Date Dt = Convert(D); 
        Calendar Cal = Calendar.getInstance(); 
        Cal.setTime(Dt); 
        secondsSpecial = secondsInterval*(1+(seconds/secondsInterval)); 
        Cal.add(Calendar.SECOND, (int) secondsSpecial);

        dateSecondsReg = Cal.getTime(); 
        System.out.println(""+dateSecondsReg);
        System.out.println(""+secondsSpecial);


    }

我将此功能称为:

public static void main(){
        secondsToNotify(2682810000, "1929-01-02"); 
    }

编译器在第一个参数2682810000上的函数调用时给出了一条错误消息,其中显示: int类型的文字2682810000超出范围。然而作为一个论点,我接受了很长时间。我知道我错了,但我无法知道。

2 个答案:

答案 0 :(得分:1)

使用

secondsToNotify(2682810000l, "1929-01-02");  

secondsToNotify(2682810000L, "1929-01-02");

而不是

secondsToNotify(2682810000, "1929-01-02"); 

编辑:最好使用L,因为有些时候l可能会导致1混淆

答案 1 :(得分:1)

来自JLS 3.10.1

  

如果整数文字以ASCII为后缀,则其长度为long   字母Ll(ell);否则它的类型为int(§4.2.1)。

在号码末尾添加L,例如2682810000L