当前位置: 首页 > 知识库问答 >
问题:

使用get时输出失败。Java驱动程序/程序文件中的Name()

邢博涛
2023-03-14

我必须制作一个程序,接收宠物信息的输入,并以特定的方式输出
通常情况下,这将是一个蛋糕,需要10分钟,但我们刚刚进入OOP,我很难弄清楚应该在驱动程序的变异器中放入什么。

司机:

import java.util.HashSet;
import java.util.Set;

public class JMPets {
    private String petType; 
    private String petName; 
    private int petAge; 
    private double petWeight; 
    boolean isMale; 

    public void setType(String petType)
    {
        this.petType = petType; 
    }
    public void setName(String petName)
    {
        this.petName = petName; 
    }
    public void setAge (int petAge)
    {
        this.petAge = petAge; 
    }
    public void setWeight(double petWeight)
    {
        this.petWeight = petWeight; 
    }
    public String getType()
    {
        return petType; 
    }
    public String getName()
    { 
        return petName; 
    }
    public int getAge()
    { 
        return petAge; 
    }
    public double getWeight()
    {
        return petWeight;         
    }

    public void set(String petType, String petName, int petAge, 
           double petWeight)
    {
        //WHAT DO I PUT HERE

    }

}
import java.util.Scanner;
public class JMUnit6 {


    public static void main(String[] args) {

    JMPets myPet1 = new JMPets(); 
    JMPets myPet2 = new JMPets(); 
    JMPets mypet3 = new JMPets(); 
    Scanner stdIn = new Scanner(System.in); 
    System.out.println("Welcome to the Java Pet Tracker");
    System.out.println("Please enter the type of Pet #1:");
    String petType = stdIn.nextLine(); 

    System.out.println("Please enter the name of Pet #1:"); 
    String petName = stdIn.nextLine(); 

    System.out.println("Please enter the age of " +petName+":");
    int petAge = stdIn.nextInt(); 

    System.out.println("Please enter the weight of "+petName+":");
    double petWeight = stdIn.nextDouble(); 

    System.out.println("Is "+petName+" Male?:");
    boolean isMale = stdIn.nextBoolean(); 

    myPet1.set(petType, petName, petAge, petWeight); 


    System.out.println(myPet1.getType());
    System.out.println(myPet1.getName()); 
    System.out.println(myPet1.getAge());
    System.out.println(myPet1.getWeight()); 



    }//end main
}//end class JMUnit6

我得到的唯一输出是null 0.0。

共有2个答案

阎宾实
2023-03-14

这是一个让你理解构造函数和变种的练习。您可以使用访问器测试您的实现。

这篇文章介绍了一些基本知识。Java——使用访问器和Mutator方法

官方教程也有效,但更重要的是——构造函数。

至于你的评论,以下是一些指导原则。

对于第一个pet,使用默认构造函数并使用适当的mutator方法来设置所有变量

JMPets myPet1 = new JMPets(); // use the default constructor
System.out.println("Please enter the type of Pet #1:");
String petType = stdIn.nextLine(); 
myPet1.setType(petType); // use proper mutator methods to set all variables

// TODO: stdIn.nextLine for remainder of values. Use the 'individual' set methods

对于第二个pet,使用接受类型作为参数的单参数构造函数,并对所有其他值使用适当的mutator方法

(在实现此构造函数之前不会编译)

System.out.println("Please enter the type of Pet #2:");
String petType = stdIn.nextLine(); 
JMPets myPet2 = new JMPets(petType); // TODO: Implement this

System.out.println("Please enter the name of Pet #2:"); 
String petName = stdIn.nextLine(); 
myPet2.setName(petName); // use proper mutator methods for all other values


// TODO: stdIn.nextLine for remainder of values. Use the 'individual' set methods

对于第三个宠物,使用一个接受所有值作为参数的构造函数

同样,和以前一样的问题,需要一个构造函数(见最后一行)。

System.out.println("Please enter the type of Pet #3:");
String petType = stdIn.nextLine(); 

System.out.println("Please enter the name of Pet #3:"); 
String petName = stdIn.nextLine(); 

System.out.println("Please enter the age of " +petName+":");
int petAge = stdIn.nextInt(); 

System.out.println("Please enter the weight of "+petName+":");
double petWeight = stdIn.nextDouble(); 

JMPets mypet3 = new JMPets(petType, petName, petAge, petWeight); 

现在,如果你在一个方法中完成这一切,你会得到已经定义了变量的错误。

例如

String name = "bob";
String name = "sally"; // <--- Error. 'name' already defined. 

相反,只需重新分配name="sally";,第二次不需要String name

施恩
2023-03-14

看看你的二传手,你已经有了答案。

this.petType = petType;
this.petName = petName;
this.petAge = petAge;
this.petWeight = petWeight;

您可能还缺少了isMale

 类似资料:
  • 我有一个Spring应用程序,在IDE和本地mariadb中运行良好,在POM中使用mariadb 2.7.4,如下所示,但我在Ubuntu上运行它时出现了第二个错误。我已经删除了mysql连接器,但仍然存在问题。为什么会出现差异和问题? 原因:组织。springframework。豆。BeanInstationException:未能实例化[com.zaxxer.hikari.HikariDat

  • 的配置在中正确 我还使用cli检查了 null Kubernetes版本(使用):1.7.3 云提供商或硬件配置**:4核16G RAM 操作系统(例如来自/etc/os-release):CentOS Linux 7(核心) 内核(例如):Linux 10-8-108-92 3.10.0-327.22.2.el7.x86_64#1 SMP Thu Jun 23 17:05:11 UTC 2016

  • 我正在使用appium来自动化android应用程序。在这种情况下,无法对文本字段执行sendkeys():单击Add Customer选项。翻开了新的一页。我正在尝试在文本字段中输入值。我能够使用XPath找到页面上的文本字段。我可以点击文本字段。但是当我执行sendkeys()时,它失败了。参考下面的截图。 链接:2-添加客户-打开新页面(第2页)并尝试输入详细信息

  • 问题内容: 我正在尝试使用servlet上的Java驱动程序连接到mlab上托管的MongoDB数据库。 问题是我遇到以下错误: 我看了一个答案(如何解决ClassNotFoundException:com.mongodb.connection.BufferProvider?),该答案向我强调了我需要其他jar,自从我下载了这些jar之后,仍然出现此错误。 我正在使用Eclipse并将这三个jar

  • 当我运行这个错误时,请帮助我解决这个问题 启动应用程序上下文时出错。要显示条件,请报告启用“调试”后重新运行应用程序。2019-02-11 10:53:55.839错误8804 --- [ restartedMain]o. s. b. d.日志失败分析记者: 应用程序启动失败 说明: com中的字段userDao。实例Spring Security应用程序编程接口。服务UserServiceImp

  • 我试图使用servlet上的Java驱动程序连接到托管在mlab上的MongoDB数据库。 问题是我得到以下错误: 这样做对吗?我还应该做什么/代替吗?