Java代码无法访问

时间:2018-08-23 12:27:24

标签: java

请查看我的代码,其显示的代码无法访问。

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()) {

2 个答案:

答案 0 :(得分:5)

您有一个无限循环while(true),因此您永远不会到达for循环。

请注意:您拥有的break仅会破坏switch

建议: 解决该问题的一种方法是将硬编码的true交换为在默认情况下设置为false的类似isMemberSelected。您可能还可以切换到do-while循环。

您甚至可以将其分解为单独的方法memberships = createMembers();

答案 1 :(得分:0)

我认为您在while(true)处有一个无限循环,该循环将始终为true,因此脚本的执行将保留在循环中。尝试使用另一个不应总是评估为true的循环防护。