[英]How can i create a method that modifies an object of another class(java)?
[英]How can I use a method in one class to create an instance of another in Java?
我有两个类,一个是计算对象(CyberPet.java),另一个是测试计算对象(TestCyberPet.java)。 在TestCyberPet中,我有一个名为createPet()的方法,该方法将使用用户输入实例化CyberPet的实例。 我已经做完了
CyberPet pet3 = null;
这是createPet():
private static CyberPet createPet()
{
/*** Local variables ***/
Scanner scanner = new Scanner( System.in );
final String formatString = "%22s: ";
String name;
String size;
String activity;
/*** Get user input ***/
System.out.println();
System.out.printf( formatString, "Enter your pet's name" );
name = scanner.nextLine().trim();
System.out.println();
System.out.printf( formatString, "Enter your pet's size (big or small)" );
size = scanner.nextLine().trim().toLowerCase();
System.out.println();
System.out.printf( formatString, "Enter your pet's current activity (eating, sleeping, or thinking)" );
activity = scanner.nextLine().trim().toLowerCase();
/*** Validate input, notify user of errors ***/
if ( name.length() == 0 )
{
System.out.println( " Invalid input. Name cannot be blank." );
name = CyberPet.DEFAULT_NAME;
}
// else leave as entered string
if ( size == "big" || size == "small" )
{
System.out.println( " Invalid input. Size must be either big or small." );
size = CyberPet.DEFAULT_SIZE;
}
// else leave as entered string
if ( activity == "eating" || activity == "sleeping" || activity == "thinking" )
{
System.out.println( " Invalid input. Activity must be eating, sleeping, or thinking." );
activity = CyberPet.DEFAULT_ACTIVITY;
}
// else leave as entered string
/*** Create cyberpet ***/
CyberPet pet = new CyberPet( name, size, activity );
return pet;
}
我一直在努力(我认为!),直到尝试这样做为止
pet3.createPet();
因为createPet不在CyberPet类中使用。 如何使用createPet创建CyberPet的实例?
我希望我在这里放足够的信息...这是我关于StackOverflow的第一篇文章,因此,如果我需要添加更多内容,请告诉我! :)
好吧,似乎您对这些类应如何理解有所混淆。
如果要创建测试对象,则不需要用户输入。 您应该只使用已知值。 它更快并且达到了相同的目的。 其次,如果要访问private static
方法,则需要从类内部进行访问。 可以通过以下方式访问它:
TestCyberPet.createPet();
这将返回一个CyberPet
类型的实例。
注意
首先,您需要查看JUnit之类的测试框架 。 这将为您自动化测试过程,并使编写这类测试变得更加容易。
其次,修改您对OOP的知识。 您不应该对该类之外的类执行用户输入的验证。 只有班级本身应该知道它需要什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.