gpt4 book ai didi

java - 当参数正确时,两个构造函数中一个有效,另一个无效

转载 作者:行者123 更新时间:2023-11-29 08:22:15 25 4
gpt4 key购买 nike

我是编程新手。我不明白为什么我用来检查构造函数中字符串参数字符有效性的构造函数之一不起作用。构造函数应该检查输入的字符串是否只包含字符 G、C、A、T,否则它会抛出一个 IllegalArgumentException

我尝试使用字符数组来检查字符串的有效性,方法是对输入的字符串使用 toCharArray() 方法。构造函数适用于无效字符串,但不适用于有效字符串。但我使用的另一个构造函数有效。请告诉我为什么第一个没有。

//这是第一个对我不起作用的构造器

public class Fragment {
private String nucleotideSequence;

public Fragment(String nucleotides) throws IllegalArgumentException {

char[] validityCheck = nucleotides.toCharArray();
int validityCounter = 0;

for (char c : validityCheck) {
if(c != 'G' || c != 'C' || c != 'A' || c != 'T') {
validityCounter++;
}
}

if (validityCounter != 0) {
throw new IllegalArgumentException("Invalid characters present");
}

nucleotideSequence = nucleotides;
}
}

//这是第二个有效的构造函数

public class Fragment {
private String nucleotideSequence;

public Fragment(String nucleotides) throws IllegalArgumentException {

boolean k = false;

for(int i = 0; i < nucleotides.length(); i++){

char lol = nucleotides.charAt(i);
if(lol=='A'||lol=='G'||lol=='C'||lol=='T'){
k = true;
}
else{
k = false;
}

if(k == false){
throw new IllegalArgumentException("Dosent work");
}

nucleotideSequence = nucleotides;
}
}
}

最佳答案

您在构造函数中无法正常工作的问题与以下“if”语句有关:

if(c != 'G' || c != 'C' || c != 'A' || c != 'T')

这句话总是正确的。所以如下:

    for (char c : validityCheck) {
if(c != 'G' || c != 'C' || c != 'A' || c != 'T') {
validityCounter++;
}
}

等于:

    for (char c : validityCheck) {
validityCounter++;
}

正确的说法是

if(c != 'G' && c != 'C' && c != 'A' && c != 'T') {

关于java - 当参数正确时,两个构造函数中一个有效,另一个无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56716112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com