请查看我的代码,其显示的代码无法访问。
private static void createUser() {
HashMap<String, String> membership = new HashMap<String, String>();
System.out.println("Enter the Name of the User: ");
String nameOfUser=sc.next();
System.out.println("Enter the Membership tier which you prefer");
System.out.println("1. Member - 5 % discount \n 2. Bronze - 10 % discount \n 3. Silver - 15% discount \n "
+ "4. Gold - 20 % discount \n 5. Platinum - 25 % discount");
String typeOfMembership = null;
while(true){
int memberChoice=sc.nextInt();
switch(memberChoice){
case 1:
typeOfMembership="Member";
membership.put(nameOfUser,typeOfMembership);
break;
case 2:
typeOfMembership="Bronze";
membership.put(nameOfUser,typeOfMembership);
break;
default:
System.out.println("Please select one of the available Member Type.");
}
}
for (Map.Entry<String, String> entry : membership.entrySet()) {
System.out.println("Member Created Successfully with name "+entry.getKey()+" and "+entry.getValue()+" tier.");
}
}
它显示从此行开始无法访问的代码
for (Map.Entry<String, String> entry : membership.entrySet()) {
答案 0 :(得分:5)
您有一个无限循环while(true)
,因此您永远不会到达for循环。
请注意:您拥有的break
仅会破坏switch
。
建议:
解决该问题的一种方法是将硬编码的true
交换为在默认情况下设置为false的类似isMemberSelected
。您可能还可以切换到do-while
循环。
您甚至可以将其分解为单独的方法memberships = createMembers();
答案 1 :(得分:0)
我认为您在while(true)
处有一个无限循环,该循环将始终为true,因此脚本的执行将保留在循环中。尝试使用另一个不应总是评估为true
的循环防护。