問題を説明するために小さなスニペットを作成しました。最初のチェックでは、これらのユーザー名の1つを入力すると、ユーザーが既に存在していると判断できます。しかし、2番目の入力はチェックをバイパスすることができます。誰もそれを迂回することができないようにするにはどうすればいいですか?値がすでにハッシュマップに存在するかどうかを確認し、有効な値を入力できるようにします。
public static void main(String[] args) {
HashMap<String, String> uID = new HashMap<>();
Scanner scan = new Scanner(System.in);
String input = null;
uID.put("James", "25");
uID.put("Jack", "25");
uID.put("John", "25");
System.out.println("Enter your username and age");
input = scan.nextLine();
if (uID.containsKey(input)) {
System.out.println("Username already exist, choose another username.");
input = scan.nextLine();
uID.put(input, "25");
}
}
もし 'if'の代わりにwhileループを使う –
あなたの指示に従えば、' James 25'(ユーザ名**と** age、あなたが入力したようなもの)の入力、 'input'の値は' 'James 25 ''になります。これはマップの* key *ではありません。 – Andreas
しかし、肯定的なことは、あなたが何歳であっても、コンピュータはあなたが25歳だと思うだろうということです。私の妻はそのアイデアが好きです。 – ajb