输出交替字符的String方法

时间:2015-07-20 17:23:56

标签: java string algorithm

我试图在一种方法中创建一个String输出,其中两个基因链通过它们各自的字符(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]和strand [1]在构造函数中的方法之外初始化。我只是为了清楚起见将它们设置在这里。

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

当我在Java可视化工具中使用它时,预期的主导链CCGTG作为void输出返回,但是我需要在其他方法中使用String。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

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

StringBuilder result = new StringBuilder();

//... in your loop/if blocks ...
result.append(strands[0].charAt(i));

return result.toString();

答案 1 :(得分:1)

首先,你需要把你的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方法的作用。)