变量返回答案和null

时间:2013-08-07 04:46:52

标签: java variables printing null output

我最近根据我看到的视频创建了一个程序。他的程序应该将3个数字转换成一个时间,在此过程中检查它们。我的问题是当我使用System.out.print(变量名);它打印变量,然后在下一行打印null。我删除了System.out.println(变量名); null消失了,时间也消失了。我猜它是因为我在方法和类之间交换了变量,我搞砸了。

Class Time_display

package Projects;

import java.util.*;
public class Time_display {
static int h=11;
static int m=56;
static int s=32;
static String temp;
public static void main(String[] args){

    Time object=new Time();
    object.Check(h,m,s);
    //object.mil(String temp);
    //String temp=object.mil(temp);
    Display(temp);


}public static void Display(String temp){
    System.out.println(temp);

}
}

CLass Time



package Projects;

public class Time {
private int hour=0;
private int minute=0;
private int second=0;
public String temp;
public void Check(int h, int m,int s){

    int hour=(h<24 && h>0 ? h:0);
    int minute=(m<60 && m>0 ? m:0);
    int second=(s<60 && s>0 ? s:0);

    //System.out.printf("%02d:%02d:%02d",hour,minute,second);
    temp=String.format ("%02d:%02d:%02d", hour, minute, second);
    //System.out.println(temp);
    mil(temp);

}public String mil(String temp){

    Time_display object2=new Time_display();

    object2.Display(temp);

    return String.format ("%02d:%02d:%02d", hour, minute, second);
}
}

1 个答案:

答案 0 :(得分:2)

main方法中,您输出的是类变量temp,但尚未为其指定任何内容......这是null的来源。

public static void main(String[] args){
    Time object=new Time();
    object.Check(h,m,s);
    //object.mil(String temp);
    //String temp=object.mil(temp);
    Display(temp);
}

您看到它的原因和结果是因为在mil类的Time方法中,您在Display方法中调用了Time_display方法。 ..again ...

public String mil(String temp){
    Time_display object2=new Time_display();
    // This value is not null...
    object2.Display(temp);
    return String.format ("%02d:%02d:%02d", hour, minute, second);
}

老实说,我完全不知道你想要达到的是什么,但如果我这样做,我可能会想做更像......

public class TimeDisplay {

    static int h = 11;
    static int m = 56;
    static int s = 32;
    static String temp;

    public static void main(String[] args) {

        display(Time.format(h, m, s));

    }

    public static void display(String temp) {
        System.out.println(temp);

    }

    public static class Time {

        public static String format(int h, int m, int s) {
            int hour = (h < 24 && h > 0 ? h : 0);
            int minute = (m < 60 && m > 0 ? m : 0);
            int second = (s < 60 && s > 0 ? s : 0);

            return String.format("%02d:%02d:%02d", hour, minute, second);
        }

    }

}

我还强烈建议您花点时间阅读Code Conventions for the Java Programming Language