开发者社区 问答 正文

部分代码第二次不起作用,idk为什么[关闭]

我的部分代码有问题,它不起作用,我不知道为什么

第一次,当我调用此“问题”方法时,一切都很好,但是第二次,它仅执行部分代码。我认为这是switch语句的问题,所以我用if更改了它,但没有帮助

下面是控制台输出的问题,并链接到代码

抱歉,我是新来的,我找不到如何在此处发布所有代码,网站显示了一些奇怪的红色错误消息,所以我通过docs将其发布在这里,我希望它可以:)

问题是添加/删除图书馆员或注销选项

https://docs.google.com/document/d/1FrvjUnPgQR6iRtqqHT4dWwIG8VaGmEJIBvs1nctCHmM/edit

[控制台输出1

编辑:这是您可以在控制台输出中看到的此方法和问题

public static void adminAccess() {
    adminAccess = true;
    System.out.println("test, admin access = " +adminAccess);
    System.out.println("--logged in as admin");

    while(adminAccess) {
        System.out.println("test, code after if, inside while 1");
        System.out.print("1)add librarian \n2)delete librarian \n9)logout \n>>>"); 
        System.out.println("test, code after if, inside while 2");
        int input = scan.nextInt();

        System.out.println("test, code after if, inside while 3");


        if(input == 1) {
            admin.addLibrarian();
        }

        else if(input == 2) {
            admin.deleteLibrarian();
        }
        else if(input ==9) {
            adminAccess = false;
            logOut();   
        }
        System.out.println("test, code after if, inside while 4");
    }   System.out.println("test, code after while");

edit2:如果有人告诉我或指出我可以更改的内容,我将很乐意,因此代码甚至第二次显示选项:1)添加图书管理员\ n2)删除图书管理员\ n9)注销?谢谢

展开
收起
几许相思几点泪 2019-12-08 21:50:32 462 分享 版权
阿里云 AI 助理回答

根据你的描述,问题似乎出在adminAccess()方法中,特别是与用户输入和循环相关的部分。从你提供的控制台输出和代码片段来看,没有直接看到明显的语法错误或逻辑问题,但有几个可能的原因会导致程序行为不符合预期:

  1. Scanner对象的使用可能导致的问题:确保在读取整数之前,你已经正确处理了换行符。有时候,nextInt()不会读取并丢弃换行符,这可能会导致后续的输入读取出现问题。你可以尝试在读取完input后添加scan.nextLine();来消费掉换行符。

  2. 循环条件和退出逻辑:你提到第二次调用时只执行了部分代码,这可能是因为某些外部状态(比如adminAccess)在第一次执行后被改变,并且没有正确重置。但从你展示的代码片段看,adminAccess是在方法内部初始化为true的,按理说每次进入方法都会重新设置。不过,请确认在实际运行环境中没有其他地方修改了这个变量。

  3. 关于调试信息:你在代码中加入了很多打印语句来帮助调试,这是个好习惯。但是,请注意检查这些打印语句是否都正常执行了,特别是在你认为代码没有走到的地方。如果“test, code after if, inside while 4”这条消息没有打印出来,那可能意味着程序在执行到某个if分支后并没有继续执行到循环的末尾。

  4. 外部方法的影响:考虑到你提到了admin.addLibrarian();admin.deleteLibrarian();这两个方法,问题可能也出在这两个方法的实现上。它们内部是否有改变程序流程的操作,比如抛出异常、修改了共享状态或者有系统退出的调用?

为了进一步诊断问题,建议采取以下步骤: - 在addLibrarian()deleteLibrarian()方法内部也添加调试信息,以确认这些方法是否被正确调用以及它们内部的执行情况。 - 检查是否有未捕获的异常中断了程序流程。可以在整个方法外层加上一个try-catch块,捕获并打印任何可能发生的异常。 - 确认scan.nextInt()之后是否有处理换行符的逻辑。 - 如果可能,提供更完整的代码上下文或具体的控制台输出错误信息,这样能更准确地定位问题所在。

如果你需要具体帮助分析代码或解决编程问题,阿里云开发平台Codeup或云效CodeHub等产品可以提供代码托管和CI/CD服务,同时内置代码审查和问题定位功能,有助于团队协作和项目管理。对于调试和性能监控,阿里云ARMS应用实时监控服务也能提供强大的支持。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: