我正在尝试编写代码,确定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/