【问题标题】:returning a value with a constructor in java在java中使用构造函数返回一个值
【发布时间】:2018-11-03 19:25:39
【问题描述】:

好吧,这是一个作业,所以不要帮我太多...我只需要返回一个 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。

这是主要的(用于测试)

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 个小时的东西,任何帮助将不胜感激

【问题讨论】:

  • 构造函数不应该返回一些东西。
  • 我看不出任何反对票的理由。这个问题很清楚,有例子,很容易回答。发帖人不了解 Java 的基本概念这一事实没有理由拒绝投票,这就是他来这里的原因。

标签: java object constructor


【解决方案1】:

好的,给你两个提示:

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

【讨论】:

  • 稍微更正:构造函数不创建对象。 jvm 就是这样做的。然后调用构造函数初始化新创建的对象。
  • 非常感谢,工作完美:)
【解决方案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);
    }
}

【讨论】:

  • 谢谢你,哈哈,这行代码不错,我不知道我可以在一行中调用这么多方法。
  • @JacobBurgess Fluent interface.
【解决方案3】:

我不知道所有要求,但要通过该测试,您只需在 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;
  }

}

【讨论】:

    猜你喜欢
    • 2015-06-30
    • 2012-08-07
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2011-11-13
    • 2010-09-22
    相关资源
    最近更新 更多