我最近根据我看到的视频创建了一个程序。他的程序应该将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);
}
}
答案 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