【问题标题】:Objects in Java is printing out junkJava中的对象正在打印出垃圾
【发布时间】:2016-04-19 02:30:11
【问题描述】:

我的程序是一个涉及对象使用的简单程序。没有错误,唯一的问题是我的程序打印出垃圾。在它询问用户姓名、年龄和性别之后。

下面是两组程序。第一个是人的物体或骨架。第二个是打印,询问用户名年龄性别并打印出来。

public class Person 
{
    private String name;
    private int age,personality,appearance;
    private String gender;

    //constructor method. only use it once
    public Person(String nm, int ag,String gend) {
        name=nm;
        age=ag;
        gend=gender;
        personality=1+(int)(Math.random()*10);
        appearance=1+(int)(Math.random()*10);
    }

    //accessor created
    public String getName() {
        return name;
    }

    public String getGend() {
        return gender;
    }     

    public int getInt() {
        return age;
    }


    //mutator method. When using "void" NO RETURN TYPE
    public void setName (String nm) {
        name=nm;
    }

    public void setAge (int ag) {
        age=ag;
    }

    public void setGender (String gend)
    {
        gender=gend;
    }

    //helper method (kind of like print but not really printing
    public String toString () {
        String orange ="";
        orange ="Name "+name+"/n";
        orange +="age"+age+"/n";
        orange +="Gender: "+gender"/n";
        orange +="Personality "+personality+"/n";
        orange +="Apperance "+appearance+"/n";

        return orange;
    }
}

2)

import java .util.Scanner;
public class PersonTester {
    public static void main (String []args){

    // calling person 
    Person person;
    String name="", gender ="";
    int age =0;

    Scanner input =new Scanner(System.in);
    System.out.println ("What is your name");
    name =input.nextLine();

    System.out.println("What your age?");
    age=input.nextInt();

    input.nextLine();
    System.out.println ("What is your gender");
    gender =input.nextLine();

    person=new Person (name,age,gender);

    System.out.println(person);
}

我们正在学习基本对象,例如我们只学习了私有变量、构造函数、访问器、修改器和辅助方法。

【问题讨论】:

  • 嗯,打印的是什么?
  • 您能否格式化您的代码,并向我们展示一个示例输出?
  • @Gianna 顺便说一下,您在 toString() 中使用的换行符是错误的。它是\n 而不是/n。请检查。也许这就是问题所在。

标签: java object constructor helpermethods


【解决方案1】:

在您的 toString() 中,您有两个错误。您需要在gender"/n" 之间使用+,如果需要换行符,则需要使用\n

public String toString () {
    return "Name " + name + "\n" +
           "Age" + age + "\n" +
           "Gender: " + gender + "\n" +
           "Personality " + personality + "\n" +
           "Appearance " + appearance + "\n";
}

【讨论】:

    【解决方案2】:

    如果问题是未正确打印出性别,则问题出在您的构造函数中。您正在传递gend,但没有保存它。相反,您使用 gender 成员变量覆盖参数:

    public Person(String nm, int ag,String gend)
    {
        name=nm;
        age=ag;
        gend=gender;
    

    你想要的:

        gender = gend;
    

    【讨论】:

      最近更新 更多