jasmine667 2010-11-08 12:55
浏览 195
已采纳

请帮我看看这个java小程序的运行结果为什么如此奇怪

为什么这个程序不能显示出Dog[]数组中每个对象的名字?以下是Dog_Ruff.java文件的全部内容:
public class Dog_Ruff{
String name;
public static void main (String[] args){

//创建Dog对象
Dog dog1=new Dog();
dog1.bark();
dog1.name="Bart";

//创建Dog数组
Dog[] myDogs=new Dog[3];

//关门放狗
myDogs[0]=new Dog();
myDogs[1]=new Dog();
myDogs[2]=dog1;

//通过数组引用存取Dog
myDogs[0].name="Fred";
myDogs[1].name="Marge";

//myDog[2]的名字是?
System.out.print("last dog's name is ");
System.out.println(myDogs[2].name);

//逐个对Dog执行bark()
int x=0;
while(x<myDogs.length){
myDogs[x].bark();
x=x+1;
}}

public void bark(){
System.out.print(name);
System.out.println(" says Ruff!");
}
public void eat(){}
public void chaseCat(){}
}

我想要的结果见图3,而图4是上面程序运行的结果!
图3
[img]http://dl.iteye.com/upload/attachment/344756/cd9133c3-40a8-3428-848a-266dd33f4092.png[/img]
图4

[img]http://dl.iteye.com/upload/attachment/344757/f8c04353-012d-3aa4-9885-bd86138ddee5.png[/img]

  • 写回答

4条回答 默认 最新

  • ethenjean 2010-11-08 15:19
    关注

    看来你还是有点乱啊,根本没明白错误的根源,建议你不要光跑程序,多看看java基础类的书吧。建议看Thinking in Java。
    首先文件名必须和包含main方法的class名称相同,因为你要运行程序的时候是从main开始运行的。
    而类的方法调用是用类的实例名加"."加方法名来完成的,类似上述程序中,mydog[0].bark(), 其中mydog[0]就是一个Dog类的实例。
    一般情况下对象的类(Dog)和可运行程序(DogTestDrive)都是分开的,可以是两个java文件,当然也可以写在一个文件里。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog