繁体   English   中英

在Java中使用构造函数返回值

[英]returning a value with a constructor in java

好了,这是一个分配,所以不要帮我太多...我只需要返回一个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个小时的东西,任何帮助将不胜感激

好的,两个提示给您:

  • 构造函数不返回值。 他们创建对象。
  • 如果要打印自定义对象,则应定义一个特定的toString方法,以指示Java如何显示该对象。 这里举个例子。

构造函数用于初始化对象的内部状态。 在逻辑上,这里是char[] dna字段(并且不要因为“因为”而将字段设为public )。 接下来, String是不可变的; 所以str.replaceAll("[^ATCG]", ""); 没有分配是没有意义的(但是您可以在调用toCharArray()之前将其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);
    }
}

我不知道所有要求,但要通过该测试,您只需要在DnaSequence上实现toString()并返回DNA序列即可。 注意,如果传递的对象是ObjectSystem.out.println将始终调用toString

解:

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;
  }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM