好的,这是一个分配,所以不要帮我太多...我只需要返回一个DnaSequence对象。就是这样。嗯,这是构造函数
import java.io.File;
import java.lang.String;
public class DnaSequence {
public char[] dna;
public DnaSequence(char[] dna) {
String str = String.valueOf(dna);
str.replaceAll("[^ATCG]", "");
dna = str.toCharArray();
for (int i = 0; i < dna.length; i++) {
this.dna[i] = dna[i];
}
return dna;
}
}
稍后我将使用io.file和lang.string。
这是Main(用于测试)
public class DnaSequencetEST {
public static void main(String[] args) {
char[] bases = { 'G', 'A', 'T', 'T', 'A', 'C', 'A' };
DnaSequence seq = new DnaSequence(bases);
System.out.println(seq);//Should print "GATTACA"
}
}
下面是我完成结果应该做的或看起来是什么样的链接。(如果您想看看,这很有趣) http://jeff.cis.cabrillo.edu/datasets/12j_dnasequence/DnaSequence.html
因此DnaSequence.java:14错误:类型不兼容:意外返回值 返回dna: ^ 所以,是的,我一直盯着我看了5个小时,我们将不胜感激
答案 0 :(得分:2)
好,给您两个提示:
答案 1 :(得分:2)
构造函数用于初始化对象内部状态。从逻辑上讲,这里将是char[] dna
字段(并且不要使字段public
仅仅是“因为”)。接下来,String
是不可变的;因此str.replaceAll("[^ATCG]", "");
没有分配是没有意义的(但是您可以在调用toCharArray()
之前将其链接)。您需要为所需的行为覆盖toString()
。您可以简单地将char[]
传递给String
构造函数。喜欢,
public class DnaSequence {
private char[] dna;
public DnaSequence(char[] dna) {
this.dna = new String(dna).replaceAll("[^ATCG]", "").toCharArray();
}
@Override
public String toString() {
return new String(dna);
}
}
答案 2 :(得分:0)
我不知道所有要求,但要通过该测试,您只需要在toString()
上实现DnaSequence
并返回DNA序列即可。
请注意,如果传递的对象是System.out.println
,则toString
将始终调用Object
。
解决方案:
public class DnaSequence {
public final String dna;
public DnaSequence(char[] dna) {
this.dna = String.valueOf(dna).replaceAll("[^ATCG]", "");
}
@Override
public String toString() {
return this.dna;
}
}