用java中的构造函数返回值

用java中的构造函数返回值,java,object,constructor,Java,Object,Constructor,好吧,这是一个作业,所以不要帮我太多。。。我只需要返回一个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("[^ATC

好吧,这是一个作业,所以不要帮我太多。。。我只需要返回一个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;
  }
}
下面是我的完成结果应该是什么样子的链接。(如果你想看的话,只是为了好玩)

So DnaSequence.java:14错误:不兼容类型:意外返回值 返回dna: ^ 是的,这就是我盯着看了5个小时的东西,任何帮助都将不胜感激

好的,给你两个提示:

  • 构造函数不返回值。它们创建对象
  • 如果要打印自定义对象,应该定义一个specfic-toString方法来指示Java如何显示该对象。举个例子
    • 好的,给你两个提示:

      • 构造函数不返回值。它们创建对象
      • 如果要打印自定义对象,应该定义一个specfic-toString方法来指示Java如何显示该对象。举个例子

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

      构造函数用于初始化对象内部状态。这里逻辑上是
      char[]dna
      字段(不要将字段
      public
      仅仅“因为”)。接下来,
      字符串
      是不可变的;所以
      str.replaceAll(“[^ATCG]”,“)是没有意义的(但您可以在调用
      tocharray()
      之前将其链接起来)。您需要覆盖
      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序列。 请注意,如果传递的对象是
      对象,则
      System.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;
        }
      
      }
      

      我不知道所有的要求,但要通过测试,您只需要在
      DnaSequence
      上实现
      toString()
      ,然后返回DNA序列。 请注意,如果传递的对象是
      对象,则
      System.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;
        }
      
      }
      

      构造器不应该返回任何东西。我看不出任何反对票的理由。这个问题很清楚,有例子,很容易回答。发帖人不知道Java的基本概念这一事实并不是投反对票的理由,而是他来这里的原因。构造函数不应该返回什么。我看不出投反对票的任何理由。这个问题很清楚,有例子,很容易回答。发帖人不知道Java的基本概念这一事实并不是反对的理由,这也是他来这里的原因。jvm就是这样做的。然后调用构造函数来初始化新创建的对象。非常感谢,工作得很好:)稍微更正一下:构造函数不创建对象。jvm就是这样做的。然后调用构造函数来初始化新创建的对象。非常感谢,工作得很好:)谢谢,哈哈,这是一行很好的代码,我不知道我可以在一行中调用这么多方法。@jacobburges。谢谢,哈哈,这是一行很好的代码,我不知道我可以在一行中调用这么多方法。@jacobburges。