我认为我正确编写了代码,但它没有打印任何内容。谁能解释我为什么?
public class Dogs {
String name = "";
String color = "";
String breed = "";
boolean hungry = true;
void changeBarking (boolean True) {
hungry = True;
}
void changeName (String newValue) {
name = newValue;
}
void changeBreed (String newValue) {
breed = newValue;
}
void changeColor (String newValue) {
color = newValue;
}
void printStates() {
System.out.println("name:" + name);
System.out.println("color:" + color);
System.out.println("breed:" + breed);
System.out.println("hungry:" + hungry);
}
}
class DogsDemo {
public static void main(String[] args) {
Dogs dog1 = new Dogs();
Dogs dog2 = new Dogs();
dog1.changeName("Dogas");
dog1.changeColor("Juodas");
dog1.changeBarking(true);
dog2.changeName("Taksas");
dog2.changeColor("Rudas");
dog2.changeBarking(false);
}
}
答案 0 :(得分:9)
您必须实际调用执行打印的方法。
添加
dog1.printStates();
dog2.printStates();
这似乎有点尴尬:
void changeBarking (boolean True) {
hungry = True;
}
变量名应以小写字母开头,调用布尔变量True
必然会引起混淆。而是使用这样的东西:
void changeBarking (boolean isBarking) {
hungry = isBarking;
}
答案 1 :(得分:3)
您不是在调用方法printStates()
。
答案 2 :(得分:3)
尝试添加行
dog1.printStates();
dog2.printStates();
设置完所有值后,在main()方法中。目前,您实际上从未打电话给您的打印方法。
答案 3 :(得分:1)
的System.out.println( “”);允许您打印字符串。这是你在printStates()方法中所做的,但由于你没有随时调用它,它不会被执行。
答案 4 :(得分:0)
因为您没有调用方法printStates()
将方法调用为
dog1.printStates();
dog2.printStates();
答案 5 :(得分:0)
main方法之前的静态,它将方法声明为类方法,这意味着它不需要调用实例。因此,当您打算调用非静态方法时,Java会抱怨,因为您正在尝试调用所谓的“实例方法”,当然首先需要实例。
只需在主要方法中调用dog1.printStates();
和dog2.printStates();
。
class DogsDemo {
public static void main(String[] args) {
// code here
dog1.printStates();
dog2.printStates();
}
}
请参阅此简单程序:http://www.daniweb.com/software-development/java/threads/366637/calling-methods-from-main-method