【发布时间】:2016-01-25 03:33:11
【问题描述】:
import java.util.Scanner;
public class ReverseCompliment
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
String seqFirst = "0";
String seqSecond = "0";
String seqReverseCompliment = "";
boolean isOrIsNot = true;
System.out.print("Enter the first sequence: ");
seqFirst = in.next();
System.out.print("Enter the second sequence: ");
seqSecond = in.next();
for ( int i = 0; i < seqFirst.length(); i++)
{
if ( seqFirst.charAt(i) == 'A')
{
seqReverseCompliment = "T" + seqReverseCompliment;
}
else if ( seqFirst.charAt(i) == 'T')
{
seqReverseCompliment = "A" + seqReverseCompliment;
}
else if ( seqFirst.charAt(i) == 'C')
{
seqReverseCompliment = "G" + seqReverseCompliment;
}
else if ( seqFirst.charAt(i) == 'G')
{
seqReverseCompliment = "C" + seqReverseCompliment;
}
else
{
System.out.println("incorrect input");
}
}
for ( int i = 0; i < seqFirst.length(); i++)
{
if ( seqSecond.charAt(i) != seqReverseCompliment.charAt(i) )
{
isOrIsNot = false;
}
else if ( seqSecond.charAt(i) == seqReverseCompliment.charAt(i) )
{
isOrIsNot = true;
}
}
if ( isOrIsNot = true )
{
System.out.println("These are reverse compliments");
}
else if (
{
System.out.println("These are not reverse compliments");
}
}
}
本质上,我需要用户输入两个 DNA 序列,然后程序需要比较它们并确定这两个序列是否相互反向互补。我不是在找人来为我完成这项任务,我只是不知道为什么它不能正常工作。 当我测试它时,它总是说这两者是反向恭维。
【问题讨论】:
-
您必须提供更多详细信息。 “无法正常工作”是不够的。
-
“当我测试它时,它总是说这两个是反向赞美”因为无论输入如何,程序总是说这两个是反向赞美
-
您的
isOrIsNot变量仅反映了最后一次比较。一旦发现第一个不匹配项,您需要从循环中break。 -
您需要在第一次不匹配时打破循环,并且您的布尔比较需要
==而不是=。 -
我改了,同样的问题。我输入“AAA”然后“GGG”,它识别为反向赞美,这是不正确的
标签: java dna-sequence