如何检查Java中4位数代码中是否有双字母

时间:2015-01-16 14:01:02

标签: java string input char double

上述问题似乎含糊不清,但实际上这是一个非常简单的想法,我似乎无法弄明白。

它基本上是一个包含A到F字母的4位数字母代码,例如:ABDFBAAFDBAF等。

现在我正在尝试进行一些后输入处理,因为它必须无法输入代码中已有的字母,因为它必须是一个唯一的4位数代码而没有重复的字母。我一直试图让它工作,但我的代码似乎都没有工作,所以我要回头向你们寻求帮助:)

我希望这有点清楚,否则我很乐意清理它。 提前谢谢。

4 个答案:

答案 0 :(得分:2)

有点伪代码但它会起作用。

String uniquePass="";
while(uniquePass.length<4){
    String userInput=getUserInputChar()
    if(uniquePass.contains(userInput))
      rejectInputAndNotifyUser
        else
      uniquePass=uniquePass+userInput
}

答案 1 :(得分:1)

public static boolean hasDuplicateChars(String string) {
    Set<Character> chars = new HashSet<Character>();
    for (char c : string.toCharArray()) {
        if (!chars.add(c)) return false;
    }
    return true;
}

Set是一个不包含重复元素的集合。我们将使用add方法,如果该集合尚未包含指定的元素,则返回true。

hasDuplicateChars函数使用toCharArray函数和for循环遍历输入字符串中的字符;每个字符都会添加到最初为空的chars集中。如果add方法返回false,则表示我们之前已经遇到过相同的字符。所以我们从函数中返回false。

否则输入有效,方法返回true。

答案 2 :(得分:0)

使用此功能,您将能够查看字符串是否包含唯一字符

public static boolean checkForUnique(String str){
    boolean containsUnique = false;

    for(char c : str.toCharArray()){
        if(str.indexOf(c) == str.lastIndexOf(c)){
            containsUnique = true;
        } else {
            containsUnique = false;
        }
    }

    return containsUnique;
}

更新

每次用户输入一个角色时都会运行,如果失败,则表示存在重复。您可以选择丢弃该输入或显示错误。

答案 3 :(得分:0)

如果你要验证完整的输入,你可以依靠设定的语义和一些技巧

    String s = "ABAF";
    int count = new HashSet<>(Arrays.asList(s.split(""))).size();
    if (count - 1 == 4) {
        System.out.println("All ok");
    } else {
        System.out.println("Repeated letters");
    }

split("")会将字符串拆分为类似{"","A", "B", "A", "F"}的数组。

new HashSet<>(Arrays.asList(s.split("")))将创建一个带有字符串元素的Set,并且当Set将弹回已经包含的元素时,该集合的大小例如为&#34; AAAF&#34;将是3(它包含&#34;&#34;,&#34; A&#34;&#34; F&#34;)。这样,您可以使用集合的大小来确定字符串的所有字母是否都是唯一的

如果它在键入你的时候比解决方案取决于输入法,但你可以有类似的东西(伪东西)

if (pass.contains(letter)) {
  breakAndNotifyUser();
} else {
  pass+=letter;
}