当前位置: 首页 > 知识库问答 >
问题:

停止重复输入(扫描仪)

陆昕
2023-03-14

我对编程相当陌生。目前我正在做一个uni项目,用java创建一个基本的文本游戏。我遇到的问题是,如何实现一个不允许用户输入相同名称的业务规则。我把它设置好了,这样扫描仪就可以读取阵列了。我使用的是Java,这是我第一次使用这个论坛,所以我非常感谢大家提供的帮助,并提前感谢大家!:)

并为糟糕的格式道歉,我不知道如何正确发布。

        try {
            
            // Takes in the number of players 
            int noOfPlayers;
            Scanner s = new Scanner(System.in);
            System.out.println("Enter number of players between 2 and 4");
            noOfPlayers = s.nextInt();

            s.nextLine();
            if (noOfPlayers < 2 || noOfPlayers >= 5) { // limits number of players enter no less than 2 and no greater than 4
                System.out.println("Nope wrong number");
                enterInfo();
                s.close();
                return;
            } else {
                
                // array for storing player names

                String[] names = new String[noOfPlayers];
                
                // iterates through the array depending how many players are selected
                // and takes in String input

                for (int counter = 0; counter < noOfPlayers; counter++) {
                    System.out.println("Enter name of player : " + (counter + 1));
                    names[counter] = s.nextLine();
                    
                    
                    // fix this to stop same name sbeing entered 
                    //if(names.equals(names)) {
                    //  System.out.println("Enter a different name");
                    //  counter--;
                //  }
                    
                    

                }

            }
            
            s.close();
        } catch (Exception e) {
            System.out.println("Problem");

        }

    }

共有1个答案

汪思博
2023-03-14

使用套装怎么样?布景必须有所有不同的东西。

就像在Array中[kim, lee, kim, park]但是在Set中[kim, lee, park]

输入kim=

输入李=

输入kim=

然后你要做的就是告诉他们“改名plz”

String name = s.nextLine();
names[counter] = name;

Set<String> set = new HashSet<String>(); 
set.add(name)

if(names.length != set.size())
{
 System.out.println("Enter a different name");
 counter--;
}

我希望你能理解我拙劣的解释。

 类似资料:
  • 我想在我的代码中手动读取一些值。除了最后一个(lambda2)之外,它对所有值都有效。我可以无限地继续键入值,即使它们不是双精度的,也不会发生任何事情。如果我用任何其他值键入其他值,我会收到一条错误消息,以及第一次输入lambda2时的错误消息。我在另一个代码中以类似的方式(最终只创建了一个不同的对象)进行了操作,并且效果很好。

  • 为此,我创建了一个名为的单例。这个类处理所有的输入阅读内容。我创建了一个名为的方法,它将回调作为参数。在这个方法中,我创建了一个新线程,并在其中等待使用的输入。这个类还有方法,它向上面描述的线程发送中断消息。下面是该类的当前实现: 这个代码极不可靠。我一会儿就告诉你我的意思。我制作了一个名为Client的玩具类,在中,我用计时器模拟了消息收入。 以下是它的工作原理: 我知道这个问题非常长(也许是不

  • 我正在制作一个地下城探索类型的游戏,用户可以输入输入作为一个移动每回合(选择一个方向移动)。然而,我遇到了一个问题与采取扫描仪输入。当我测试我的方法一次,它是正确的,然而,当我把它进入一个while循环,以便我可以从玩家的每一个回合,我得到一个新的移动,在第一次输入后,我得到了一个错误。我不明白为什么我会得到这个错误,因为它不应该每次运行时都扫描新的输入吗?谢谢你的洞察力。 错误如下: 下面是有问

  • 我遇到的问题是,如何发送enter以结束循环?因为系统。在里面read()取第一个数字,如果我再加上2个数字,示例可以是, 条目: 2 3(输入)读2个数字和和 1 2(输入)读2个数字和和 (enter)这里结束循环,因为enter和no数字,并给出了解决方案 出口: 5. 3. 我不知道我以前发过什么

  • 问题内容: 我正在尝试编写此方法,该方法会不断从用户那里读取内容,直到输入单词“ exit”为止。我尝试了一个for和break循环;它没有用。我尝试了一段时间,但即使输入了“退出”一词也不会停止。任何想法如何解决这一问题?谢谢。 问题答案: 是错的。 你要 要么 分别取决于exit是变量还是字符串文字。在Java中,表示引用相等(例如,这两个引用指向内存中的相同地址),而。表示对象等效项,通常在

  • 我正在使用Java的扫描仪读取用户输入。如果我只使用nextLine一次,它可以正常工作。对于两个nextLine,第一个不等待用户输入字符串(第二个)。 输出: X:Y:(等待输入) 我的代码 你知道为什么会发生这种事吗?谢谢