我的部分代码有问题,它不起作用,我不知道为什么
第一次,当我调用此“问题”方法时,一切都很好,但是第二次,它仅执行部分代码。我认为这是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)注销?谢谢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据你的描述,问题似乎出在adminAccess()
方法中,特别是与用户输入和循环相关的部分。从你提供的控制台输出和代码片段来看,没有直接看到明显的语法错误或逻辑问题,但有几个可能的原因会导致程序行为不符合预期:
Scanner对象的使用可能导致的问题:确保在读取整数之前,你已经正确处理了换行符。有时候,nextInt()
不会读取并丢弃换行符,这可能会导致后续的输入读取出现问题。你可以尝试在读取完input
后添加scan.nextLine();
来消费掉换行符。
循环条件和退出逻辑:你提到第二次调用时只执行了部分代码,这可能是因为某些外部状态(比如adminAccess
)在第一次执行后被改变,并且没有正确重置。但从你展示的代码片段看,adminAccess
是在方法内部初始化为true
的,按理说每次进入方法都会重新设置。不过,请确认在实际运行环境中没有其他地方修改了这个变量。
关于调试信息:你在代码中加入了很多打印语句来帮助调试,这是个好习惯。但是,请注意检查这些打印语句是否都正常执行了,特别是在你认为代码没有走到的地方。如果“test, code after if, inside while 4”这条消息没有打印出来,那可能意味着程序在执行到某个if分支后并没有继续执行到循环的末尾。
外部方法的影响:考虑到你提到了admin.addLibrarian();
和admin.deleteLibrarian();
这两个方法,问题可能也出在这两个方法的实现上。它们内部是否有改变程序流程的操作,比如抛出异常、修改了共享状态或者有系统退出的调用?
为了进一步诊断问题,建议采取以下步骤: - 在addLibrarian()
和deleteLibrarian()
方法内部也添加调试信息,以确认这些方法是否被正确调用以及它们内部的执行情况。 - 检查是否有未捕获的异常中断了程序流程。可以在整个方法外层加上一个try-catch块,捕获并打印任何可能发生的异常。 - 确认scan.nextInt()
之后是否有处理换行符的逻辑。 - 如果可能,提供更完整的代码上下文或具体的控制台输出错误信息,这样能更准确地定位问题所在。
如果你需要具体帮助分析代码或解决编程问题,阿里云开发平台Codeup或云效CodeHub等产品可以提供代码托管和CI/CD服务,同时内置代码审查和问题定位功能,有助于团队协作和项目管理。对于调试和性能监控,阿里云ARMS应用实时监控服务也能提供强大的支持。