谢谢大家的答案!还有一个问题:如何打印出布尔值? System.out.println(goodBase)似乎无法正常工作
public class Dna {
public static void main(String[] args){
aBase('A');
}
public static boolean aBase (char c) {
char [] charArray = { 'A', 'G', 'C', 'T' };
boolean goodBase;
if (c == 'A' || c == 'G' || c == 'C' || c == 'T')
{
return true;
}
else
{
return false;
}
}
}
谢谢!
答案 0 :(得分:2)
如果您在适当的环境中使用该代码,该代码正在为我工作。我在下面附上了一份完整的功能样本:
public class Main {
// create a Test Method
public static boolean test(char c) {
if (c == 'A' || c == 'G' || c == 'C' || c == 'T') {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
// create some sample data
String sample = "AGCTEDHI";
// test
for (int i = 0; i < sample.length(); i++) {
char current = sample.charAt(i);
System.out.println(current + " is " + test(current));
}
}
}
输出:
A is true
G is true
C is true
T is true
E is false
D is false
H is false
I is false
答案 1 :(得分:0)
我认为是这样的:
char [] charArray = { 'A', 'G', 'C', 'T' };
if (base == charArray[0] || base == charArray[1] ||
base == charArray[2] || base == charArray[3])
return true; // a good base
return false;
答案 2 :(得分:0)
首先,在char
语句中检查的aGoodBase
方法中没有声明if
命名变量。
其次,这是真正的交易,这样的变量永远不会存在,因为char
是Java中的保留关键字(如byte
,int
,long
, public
,strictfp
等),它只能用于将变量声明为原始char
类型。
这解答了DnaTest
未编译的原因。
现在,让我们为您的答案考虑一个可能的解决方案:
public class DnaTest {
private final static char [] baseArray = {'A', 'C', 'G', 'T'};
// checks whether String s only contains the right base elements or not
public static boolean aGoodBase(String s){
String s1 = s.toUpperCase(); // just ensuring case insensitive checks
for (int i=0; i<s1.length(); i++) {
char check = s1.charAt(i);
if (baseArray[0] != check &&
baseArray[1] != check &&
baseArray[2] != check &&
baseArray[3] != check) {
// at least one char of s is not in baseArray
return false;
}
}
return true;
}
public static void main(String[] args) {
// should be true
System.out.println("Does GATTACA have aGoodBase? " + aGoodBase("GATTACA"));
// should be false
System.out.println("Does MORROW have aGoodBase? " + aGoodBase("MORROW"));
// should be true, the check on the base is case insensitive
System.out.println("Does GaTTaca have aGoodBase? " + aGoodBase("GaTTaca"));
// should be false
System.out.println("Does GATMOR have aGoodBase? " + aGoodBase("GATMOR"));
}
}
输出:
Does GATTACA have aGoodBase? true
Does MORROW have aGoodBase? false
Does GaTTaca have aGoodBase? true
Does GATMOR have aGoodBase? false
现在aGoodBase方法接受一个String,如果s只包含baseArray数组中声明的四个基本元素的组合,则返回true。即使基本元素不是大写字母(如主要的第三个例子:GaTTaca),我也冒昧地返回true。