我正在尝试编写代码,确定DNA序列的两个输入是否为反向互补。该程序要求用户将序列作为字符串提供。
我的代码可以正确执行,但是我想编写一个if语句,如果所有字符都是'A','T','C'或'G',则可以继续执行程序。

这是我自己想到的,但是它不起作用,甚至看起来都不近。我是这门语言的新手,来自ADA,但遇到任何帮助都会很棒。

if ( seqFirst.charAt(i) !=  'A' || seqFirst.charAt(i) != 'T' ||
                 seqFirst.charAt(i) != 'C' || seqFirst.charAt(i) != 'G' ||
                 seqSecond.charAt(i) !=  'A' || seqSecond.charAt(i) != 'T' ||
                 seqSecond.charAt(i) != 'C' || seqSecond.charAt(i) != 'G' )

最佳答案

您只需要在整个条件表达式中将||更改为&&

作为解释,请考虑以下简化版本的代码:

  if (c != 'A' || c != 'T' ) { // IS BAD }


考虑c'A'的情况。第一个谓词的计算结果为false。第二个谓词的值为true。整个表达式是false || true ...这是true ...“ BAD”

现在将||更改为&&,您将得到false && true ...,即false ...“ NOT BAD”




  我是该语言的新手,来自ADA ...


那不是真正的问题。问题在于了解布尔代数的工作原理。即DeMorgan's Laws

关于java - 如何处理错误的输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35005710/

10-10 17:27
查看更多