【问题标题】:Output for a String method of alternating characters交替字符的字符串方法的输出
【发布时间】:2015-07-20 17:23:56
【问题描述】:

我正在尝试以一种方法创建一个字符串输出,其中两个遗传链通过它们各自的字符(A、C、T、G)和两条链的主要碱基(以较高值为准)进行比较,是回来。到目前为止,我有:

public String getDominant() {
    int STRAND_LENGTH = 5;
    String strands[0] = "ACCTG";
    String strands[1] = "CCGTA";

    for (int i = 0; i < STRAND_LENGTH; i++) {
        if (strands[0].charAt(i) > strands[1].charAt(i)) {
           System.out.print(strands[0].charAt(i));
        }
        else if (strands[0].charAt(i) < strands[1].charAt(i)) {
            System.out.print(strands[1].charAt(i));
        }
        else {
            System.out.print(strands[0].charAt(i));
        }
        return;
    }

在我的代码中,strands[0] 和 strands[1] 在构造函数中的方法之外进行初始化。为了清楚起见,我只是将它们设置在这里。

我知道我需要返回一个String,但是我不确定如何将for循环的输出转换为可以传递的变量。

当我在 Java 可视化器中使用它时,预期的主导链 CCGTG 作为 void 输出返回,但我需要获取一个字符串以在其他方法中使用。

有什么建议吗?

【问题讨论】:

    标签: java string algorithm


    【解决方案1】:

    您可以使用StringBuilder 来建立返回值。

    StringBuilder result = new StringBuilder();
    
    //... in your loop/if blocks ...
    result.append(strands[0].charAt(i));
    
    return result.toString();
    

    【讨论】:

      【解决方案2】:

      首先,您需要将 return 语句放在 for 循环之外,因为您只想在最后返回。

      您可以使用StringBuilder 来跟踪结果:

      StringBuilder result = new StringBuilder();
      for (int i = 0; i < STRAND_LENGTH; i++) {
          result.append((char)Math.max(strands[0].charAt(i), strands[1].charAt(i)));
      }
      return result.toString();
      

      (我还用一个方法调用替换了您的if 语句。我想您了解max 方法的作用。)

      【讨论】:

        猜你喜欢
        • 2012-09-25
        • 2021-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多