Java 如何使用具有字符输入和布尔输出的方法?

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',

谢谢大家的回答!还有一个问题:如何打印布尔值?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;
        }
      }  
    }

谢谢

如果您在正确的环境中使用该代码,则该代码对我有效。我在下面附上了一个完整的功能示例:

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