我正在尝试创建一种方法,将一个互补的DNA碱基分配给另一个。
以下是我现在所拥有的:
public class DnaTest {
public static void main(String[] args){
}
public static boolean aGoodBase (char c) {
boolean aBase;
if (c == 'A' || c == 'G' || c == 'C' || c == 'T')
{
aBase = true;
}
else
{
aBase = false;
}
System.out.println(aBase);
return aBase;
}
public static char baseComplement (char c){
boolean anotherBase = isGoodBase(c);
if (anotherBase)
{
if (isGoodBase('A'))
{
c = 'T';
}
else if (isGoodBase('T'))
{
c = 'A';
}
else if (isGoodBase('G'))
{
c = 'C';
}
else if (isGoodBase('C'))
{
c = 'G';
}
System.out.println(c);
return c;
}
else
{
System.out.println(c);
return c;
}
}
}
第二种方法应该首先通过使用第一种方法验证输入的字符是否是有效的基数(ACG或T),然后分配其互补碱基(如果碱基无效,它应该打印出相同的字符,例如输入Z,输出Z)。
使用此代码,当我输入'A'时,我得到以下输出:
true
true
true
T
但如果我输入另一个基础,我会得到完全相同的输出......
当我输入一个无效的基础,如'z'时,我得到:
false
false
z
有人能帮助我吗?
答案 0 :(得分:0)
在确定补充基础的代码中,您正在编写:
if (isGoodBase('A')) {
c = 'T';
}
当你写作时:
if (c == 'A') {
c = 'T';
}
您已经检查过基数c
是正确的基础(因为我们是anotherBase
true
时的情况)所以您不需要检查它试。
您可以使用switch statement:
更轻松地重写此内容switch (c) {
case 'A': c = 'T'; break;
case 'T': c = 'A'; break;
case 'C': c = 'G'; break;
case 'G': c = 'C'; break;
}
答案 1 :(得分:0)
减少代码 - 减少错误的机会。
public static char baseComplement (char c){
int index = "ATGC".indexOf( c );
if( index >= 0 ){
return "TACG".charAt( index );
} else {
return c;
}
}
强烈建议在文字中使用最终的静态字符串。