Java 如何使用具有字符输入和布尔输出的方法?
谢谢大家的回答!还有一个问题:如何打印布尔值?System.out.println(goodBase)似乎不起作用Java 如何使用具有字符输入和布尔输出的方法?,java,char,boolean,Java,Char,Boolean,谢谢大家的回答!还有一个问题:如何打印布尔值?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',
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;
}
}
}
谢谢 如果您在正确的环境中使用该代码,则该代码对我有效。我在下面附上了一个完整的功能示例:
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));
}
}
}
我认为是这样的:
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;
首先,您在
if
语句中检查的aGoodBase
方法中没有声明char
命名变量
其次,这是真正的交易,因为char
在Java中是一个保留关键字(比如byte
,int
,long
,public
,stricfp
等),所以这种变量永远不可能存在,并且它只能用于将变量声明为原语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"));
}
}
现在,如果s只包含baseArray数组中声明的四个基本元素的组合,则aGoodBase方法接受一个字符串并返回true。即使基本元素不是大写字母,我也可以自由返回true(如main的第三个示例:GaTTaca)。char的值是如何定义的?我是否必须添加类似“char nucleotide”的内容;即使我有“char[]charArray={'A','G','C','T'};”?即使我加上它,它仍然不起作用。发现的错误突出显示了“if”行。类期望“此方法试图做什么?”?我可以想象一些不同的事情。您是否正在尝试查看
arg[]
中的所有字符串是否仅由AGCT组成?还是希望传入单个字符串,并让方法返回是否只包含AGCTs?或者别的什么?你说的“合适的环境”是什么意思?另外,请注意,如果(a)返回true,则在任何时间;否则返回false
您只需执行返回a
。因此在本例中:在正确的环境中返回c='A'| | c='G'| c='c'| c='T'
。就像构建一个以字符作为参数的方法一样。我认为OPs的实际问题不在于他方法背后的逻辑,而在于他如何实现和实际使用它——因此我在上面构建了一个示例。Fwiw,这不是我认为人们通常所说的“环境”。环境通常指的是操作系统、硬件、JVM版本——即“环境”其中执行的是一段代码,而不是代码本身。我不太确定OP想要完成什么,所以我很难判断您的代码是否完成了它。:)
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