我的一部分作业要求我必须在一个反转输入字符串的类中创建一个方法。教练编写了驱动程序,我必须完成课程。我刚刚开始并且一直坚持如何在类中反转一个字符串。他也指示使用“返回这个”,我也遇到了麻烦,所以我用“return c”
分配:
反向 - 此方法不带参数。它会逆转 dNACode的字符串/例如,如果dNACode是“ABC”,则在之后 这种方法的dNACode是“CBA”。该方法将返回当前值 对象(返回此)。
这是我的班级:
public class ComputerMicrobe
{
private String name; // Instance variable for name of the Computer Microbe
private String dNACode; // Instance variable to hold the number of Computer Microbe
private String reverse;
// Constructor Methods
public ComputerMicrobe (String newName, String newDNACode){
this.setName(newName);
this.setDNACode(newDNACode);
} // End Constructor Methods
//Accessor Methods
public String getName(){return this.name;}
public String getDNACode(){return this.dNACode;}
public String getReverse(){return this.reverse;}
// Mutator Methods
public void setName(String newName) {this.name = newName;}
public void setDNACode(String newDNACode) {this.dNACode = newDNACode;}
public String reverse(){
int i;
int n;
String c = null;
n = dNACode.length();
for (i = n - 1; i >= 0; i--){
c = c + dNACode.charAt(i);
} // End for loop
return c;
} // End reverse
} // End reverse
} // End Class
这是驱动程序(由教师编写):
import java.util.Scanner;
public class CluffAaronWeek7Prog
{
public static void main (String[] args)
{
Scanner stdIn = new Scanner(System.in);
String name; //Auxiliar ComputerMicrobe name
String dNACode; //Auxiliar ComputerMicrobe DNA Code
ComputerMicrobe a, b, c; // ComputerMicrobe objects
System.out.println("Enter name of first ComputerMicrobe");
name = stdIn.next();
System.out.println("Enter DNA Code for first ComputerMicrobe");
dNACode = stdIn.next();
a = new ComputerMicrobe(name, dNACode);
System.out.println("Enter name of second ComputerMicrobe");
name = stdIn.next();
System.out.println("Enter DNA Code for second ComputerMicrobe");
dNACode = stdIn.next();
b = new ComputerMicrobe(name, dNACode);
System.out.println("Initial set of ComputerMicrobes");
System.out.println(a);
System.out.println(b);
//System.out.println("ComputerMicrobe a after mutation");
//a.mutate();
//System.out.println(a);
System.out.println("ComputerMicrobe b after reverse");
b.reverse();
System.out.println(b);
//System.out.println("ComputerMicrobe c after reproduction of a and b");
//c = a.reproduce(b);
//System.out.println(c);
//System.out.println("ComputerMicrobe c after mutation and reverse");
//c.mutate().reverse();
//System.out.println(c);
//System.out.println("ComputerMicrobe b after invasion of reverse a");
//b.invadedBy(a.reverse());
//System.out.println(b);
} // end main
} // end class
我一次测试一个部分,这就是为什么大多数行被标记为注释。
当我运行驱动程序时,我将此作为输出:
答案 0 :(得分:0)
您在@中看到的是ComputerMicrobe
实例的字符串表示形式。将对象传递到System.out.println()
时,将调用默认的toString()
方法。因此,如果您覆盖toString()
类中的ComputerMicrobe
方法,以便它返回dnaCode
变量,则在打印对象时将输出该变量。
这是关于toString()方法的link,它可以帮助您了解它的作用以及如何使用它。
关于return this
,您需要做的只是代替return c
。这样做是返回类的当前实例。因此,如果您致电b.reverse()
,将返回b
。
因此,在进行这些更改后,您的reverse()
方法应如下所示:
public ComputerMicrobe reverse() {
int i;
int n;
String c = "";
n = dNACode.length();
for (i = n - 1; i >= 0; i--){
c = c + dNACode.charAt(i);
}
dNACode = c;
return this;
}
这些更改的原因是当您返回this
时,您将返回ComputerMicrobe
对象而不是String
,因此方法的返回类型必须更改。此外,由于c
未被返回,因此必须将其置于可由程序的其余部分访问的位置,以便进入dNACode
成员变量,该变量将在{{1}中输出}} 方法。最后toString()
初始化为c
,而不是null
,因此将char连接到其上将无法按预期工作。它应该初始化为空String
。希望这一切都有意义,乐于进一步解释或提供一些你不确定的链接。
以下是一对让你入门的事情: