我试图在一种方法中创建一个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。
有什么建议吗?
答案 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
方法的作用。)