Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 在字谜中找到重复的字母_Java_String - Fatal编程技术网

Java 在字谜中找到重复的字母

Java 在字谜中找到重复的字母,java,string,Java,String,我正在写一个程序,非常类似于节目倒计时。有一堆字母,你可以用它们来造单词 我已经完成了基础工作,用户提交的单词与基本单词对照检查,如果字符匹配,则与在线API字典对照检查。然后将分数添加到前10名排行榜中。我已经实现了所有这些,但我现在面临着我的最后一个问题,我似乎无法解决 // convert the users guess to a char array char [] chars = word.toCharArray(); for(char c : chars){ int cha

我正在写一个程序,非常类似于节目倒计时。有一堆字母,你可以用它们来造单词

我已经完成了基础工作,用户提交的单词与基本单词对照检查,如果字符匹配,则与在线API字典对照检查。然后将分数添加到前10名排行榜中。我已经实现了所有这些,但我现在面临着我的最后一个问题,我似乎无法解决

// convert the users guess to a char array
char [] chars = word.toCharArray();

for(char c : chars){
    int charIndex = baseWord.indexOf(c);

    if(charIndex != -1){
        continue;
    } else {
        System.out.println("The letter " + c + " is not in " + baseWord);
        return false;
    }
}
我将用户猜测转换为字符数组,然后将字符数组的每个元素与基字的元素进行比较。在我有重复记录之前,这一切正常。例如,如果我将基字设置为
areallylongword
,而用户猜测设置为
adder
,则返回true,而应返回false

我理解这样一个概念,即在查找char
d
时,
int charIndex=baseWord.indexOf(c)
将返回相同的值


如何避免此问题?

一旦匹配,就可以从基字中删除字母

一旦匹配,就可以从基字中删除字母

只要在找到匹配项时将
基字中的字母清空即可:

// convert the users guess to a char array
char [] chars = word.toCharArray();

for(char c : chars){
    int charIndex = baseWord.indexOf(c);

    if(charIndex != -1){
        char[] baseWordChars = baseWord.toCharArray();
        baseWordChars[charIndex] = '#';  // char wiped
        baseWord = new String(baseWordChars);
        continue;
    } else {
        System.out.println("The letter " + c + " is not in " + baseWord);
        return 0;
    }
}

找到匹配项后,只需将
基字中的字母留空即可:

// convert the users guess to a char array
char [] chars = word.toCharArray();

for(char c : chars){
    int charIndex = baseWord.indexOf(c);

    if(charIndex != -1){
        char[] baseWordChars = baseWord.toCharArray();
        baseWordChars[charIndex] = '#';  // char wiped
        baseWord = new String(baseWordChars);
        continue;
    } else {
        System.out.println("The letter " + c + " is not in " + baseWord);
        return 0;
    }
}

将出现的字符计数到数组或哈希中,然后减少猜测单词的计数

例如,如果假设基字应包含字母ASCI-128,则可以创建一个位置为128的数组,并使用字符码作为字母的索引

char [] chars = word.toCharArray();
int[] charCount = int[128]; // By default every position is 0
for (c : chars) {
   charCount[c] += 1; // Increments the count of char 
}
然后检查用户的猜测词,并从这个charCount中减少,以验证用户是否猜对了,charCount上永远不应该有负数

char[] c = guess.toCharArray();
for (c : chars) {
   charCount[c] -= 1;
   if (charCount[c] < 0) {
     return 0;
   }
}
char[]c=guess.toCharArray();
对于(c:字符){
字符数[c]-=1;
if(字符数[c]<0){
返回0;
}
}

将出现的字符计数到数组或散列中,然后减少猜测单词的计数

例如,如果假设基字应包含字母ASCI-128,则可以创建一个位置为128的数组,并使用字符码作为字母的索引

char [] chars = word.toCharArray();
int[] charCount = int[128]; // By default every position is 0
for (c : chars) {
   charCount[c] += 1; // Increments the count of char 
}
然后检查用户的猜测词,并从这个charCount中减少,以验证用户是否猜对了,charCount上永远不应该有负数

char[] c = guess.toCharArray();
for (c : chars) {
   charCount[c] -= 1;
   if (charCount[c] < 0) {
     return 0;
   }
}
char[]c=guess.toCharArray();
对于(c:字符){
字符数[c]-=1;
if(字符数[c]<0){
返回0;
}
}

我不看这个节目,所以我不太明白你的意思,游戏是用户有一堆字母,应该从中提取一个单词??那么基本单词是什么?是的,准确地说,基本单词设置为
areallylongword
,其他单词必须从中提取出来。程序中的一个单词是
adder
,这应该是错误的,因为基字中只有1个D,但它是传递给mei的。不要看节目,所以我不太明白你的意思。游戏是用户有一堆字母,应该从中提取一个单词??那么基字是什么呢?是的,所以基字被设置为
arealllylongword
和其他单词必须由其组成。程序中的一个字是
加法器
,它应该是假的,因为基字中只有1个D,但它通过了,因为我尝试了,但我有一个6个字的测试来运行,它失败了,因为所有匹配的字符现在都是
#
,只需复制基字并执行匹配和在该副本中擦除我尝试过,但我有一个针对基本单词的6个单词的测试,它失败了,因为所有匹配的字符现在都是
,只需复制基本单词并在该副本中执行匹配和擦除