Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串作为输入,若它在Java中完全由字符a、T、C和G组成,则返回valid_Java_String_Character - Fatal编程技术网

将字符串作为输入,若它在Java中完全由字符a、T、C和G组成,则返回valid

将字符串作为输入,若它在Java中完全由字符a、T、C和G组成,则返回valid,java,string,character,Java,String,Character,所以,我有一个类,它接受一个字符串作为参数,如果它只由字符a、T、C和G组成,则返回valid。这就是我到目前为止得到的 public class test { public static void main(String[] args) { String s = args[0]; for(int i = 0; i < s.length(); i++) { char chr = s.charAt(i);

所以,我有一个类,它接受一个字符串作为参数,如果它只由字符a、T、C和G组成,则返回valid。这就是我到目前为止得到的

public class test {
    public static void main(String[] args) {
        String s = args[0];
        for(int i = 0; i < s.length(); i++) {
            char chr = s.charAt(i);
            if(chr != 'A' || chr != 'C' || chr != 'T' || chr != 'G') {
                System.out.println("invalid");
                break;
            }
            System.out.println("valid");
        }
    }
}
公共类测试{
公共静态void main(字符串[]args){
字符串s=args[0];
对于(int i=0;i
当CTGATCG应返回valid,DGHAIS应返回invalid时,它将返回invalid FORMENTING。
我不知道我做错了什么。有什么想法吗?

您必须从以下内容更改您的if语句:

if(chr != 'A' || chr != 'C' || chr != 'T' || chr != 'G') {

每个字符不等于
A
C
或其他字符。在当前版本中,基本上排除了所有内容

此外,您将为输入中的每个字符打印“valid”

正确的代码应如下所示:

String s = args[0];
for(int i = 0; i < s.length(); i++) {
    char chr = s.charAt(i);
    if(chr != 'A' && chr != 'C' && chr != 'T' && chr != 'G') {
        System.out.println("invalid");
        return;
    }
}
System.out.println("valid");
String s=args[0];
对于(int i=0;i

如果您想在程序中执行更多操作,在这种情况下应使用布尔变量。

您必须将If语句更改为:

if(chr != 'A' || chr != 'C' || chr != 'T' || chr != 'G') {

每个字符不等于
A
C
或其他字符。在当前版本中,基本上排除了所有内容

此外,您将为输入中的每个字符打印“valid”

正确的代码应如下所示:

String s = args[0];
for(int i = 0; i < s.length(); i++) {
    char chr = s.charAt(i);
    if(chr != 'A' && chr != 'C' && chr != 'T' && chr != 'G') {
        System.out.println("invalid");
        return;
    }
}
System.out.println("valid");
String s=args[0];
对于(int i=0;i
如果您想在程序中执行更多操作,在本例中应使用布尔变量。

您不应使用| |(或)在本例中,应使用&(和)

您的条件现在表示“如果字符不是A、C、T、G,那么它是无效的”。

您不应该使用| |(或者)在这种情况下,您应该使用&&(和)

您的条件现在表示“如果字符不同时是A、C、T、G,则该字符无效”。

这样如何:

public class test {
    public static void main(String[] args) {
        String s = args[0];
        if(!s.matches("[ACGT]+")
            System.out.println("invalid");
        else
            System.out.println("valid");
    }
}
这个怎么样:

public class test {
    public static void main(String[] args) {
        String s = args[0];
        if(!s.matches("[ACGT]+")
            System.out.println("invalid");
        else
            System.out.println("valid");
    }
}

你不需要所有的代码。1行是您所需要的全部:

public static void main(String[] args) {
    System.out.println(args[0].matches("[ACGT]*") ? "valid" : "invalid");
}

这段代码的性能也很好。

您不需要所有这些代码。1行是您所需要的全部:

public static void main(String[] args) {
    System.out.println(args[0].matches("[ACGT]*") ? "valid" : "invalid");
}

这段代码也会执行得很好。

每个字符总是不等于A、C、T和G中的至少一个。我想你是想写
chr!='A'&&chr!='C'…
此外,在检查所有字符之前,您不能说字符串有效。请阅读以下内容:每个字符始终不等于A、C、t和G中的至少一个。我想您的意思是编写
chr!='A'&&chr!='C'…
此外,在检查所有字符之前,不能说字符串有效。请阅读以下内容: