0

我需要使用封装打印 3 个变量,并且我无法修改主类。

主类声明变量[圆柱体,制造,所有者],并希望使用以下参数创建和打印一个对象:

System.out.println (new Vehicle (cylinders, make, owner)); //create Vehicle object

对象,应该接受变量并打印出一个简单的句子。

现在,我的代码“有效”:

import java.util.*;
public class Vehicle{
int var;
int var2;
double var3;
String var4;
String var5;
String tots;

public Vehicle (int cylinders, String make,String owner){
var2=cylinders;
var4=make;
var5=owner;
System.out.println(var4+", "+ var2+ " cylinders, "+"owned by "+ var5 );
}
}

它在主程序中打印句子,但是当它打印时,它会在“Vehicle@3d434234”之后打印一个奇怪的值,这似乎是类名后跟某种哈希/十六进制值。

如果我拿出我的打印声明

System.out.println(var4+", "+ var2+ " cylinders, "+"owned by "+ var5 );

然后它只会返回“Vehicle@3d434234”

如何阻止它打印类的哈希值,

请记住我不能修改

System.out.println (new Vehicle (cylinders, make, owner));

谢谢!

4

2 回答 2

4

您需要覆盖toString它的方法:

Vehicle在您的类中编写此方法:

public String toString(){

 return var4+", "+ var2+ " cylinders, "+"owned by "+ var5;
}

请注意,变量var4等是您的类中定义的变量Vehicle

于 2013-08-25T08:13:19.520 回答
0

您将需要覆盖要以字符串表示法打印其对象的类的 toString 方法。

喜欢

class Name{ 
       private String name;

        public Name(String name){
         this.name=name;
       }


       public String toString(){
          return this.name;
      }
       public static void main(String args[]){
            System.out.println(new Name("yourname"))   //output "yourname"    
       }

    }
于 2013-08-25T08:23:59.687 回答