簡體   English   中英

Java 中的對象打印出垃圾

[英]Objects in Java is printing out junk

我的程序是一個簡單的程序,涉及對象的使用。 沒有錯誤,唯一的問題是我的程序正在打印垃圾。 在它詢問用戶名稱、年齡和性別之后。

下面是兩組程序。 第一個是物體或人的骨架。 第二個是打印詢問用戶名年齡性別並打印出來。

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);
}

我們正在學習基本對象,例如我們只學習了私有變量、構造函數、訪問器、修改器和輔助方法。

在您的 toString() 中,您有兩個錯誤。 您需要在gender"/n"之間使用+ gender"/n"並且如果您想要換行符,則需要使用\\n

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

如果問題是性別沒有正確打印出來,則問題出在您的構造函數中。 您正在傳遞gend ,但沒有保存它。 相反,您用gender成員變量覆蓋參數:

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

你自找的:

    gender = gend;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM