我的程序是一个涉及对象使用的简单程序。没有错误,唯一的问题是我的程序正在打印垃圾邮件。在它询问用户姓名、年龄和性别之后。
下面是两组程序。第一个是物体或人的骨架。第二种是要求输入用户名、年龄、性别并打印出来的打印。
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"
之间使用+
,如果需要换行,则需要使用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;