return执行之后,下面的语句不是都会忽略不执行的吗,为什么id重复之后,依然要输入姓名年龄住址,输入确实只返回数字1了,有没有什么方法能够在id重复时不用再输入姓名年龄住址
//1.添加学生 id需要唯一
public static int addstudent(Student a){ Scanner sc = new Scanner(System.in); Student st = new Student(); ArrayList<Student> list = new ArrayList<>(); int temp = 0; //判断是否添加成功 System.out.println("请输入学生id"); for (int i = 0; i < list.size(); i++) { if (sc.next().equals(list.get(i).getId()) ){ return temp; } } st.setId(sc.next()); System.out.println("请输入学生姓名"); st.setName(sc.next()); System.out.println("请输入学生年龄"); st.setAge(sc.nextInt()); System.out.println("请输入学生住址"); st.setAddress(sc.next()); temp = 1; return temp;}
有没有什么方法能够在id重复时不用再输入姓名年龄住址
每调用一次方法,就会创建一个新的集合,建议将集合写在方法外,传递进来调用,可以使用Map,如若ID存在直接拿到,随后跳出方法即可。
你的代码中ArrayList<Student> list是局部变量生命周期只在addstudent{}中,所以你每次调用addstudent,ArrayList<Student> list都是一个全新的且没有数据的
请参考如下信息:
地址:https://www.runoob.com/java/java-variable-types.html
ArrayList<Student> list = new ArrayList<>();
你的这一行每次运行都是空的, for
循环都不执行......
新手学习建议善用debug
// 这个参数是干啥的…没用就去了吧public static int addstudent(Student a){ Scanner sc = new Scanner(System.in); Student st = new Student(); // 这个list貌似是用来保存数据并做去重的,但是你这个作用范围,每次都是空的,相当于没用 ArrayList<Student> list = new ArrayList<>(); int temp = 0; //判断是否添加成功 System.out.println("请输入学生id"); // 换成 for(Student s : list) 吧,谢谢 for (int i = 0; i < list.size(); i++) { // 因为 list 是空的,所以代码不会执行到这里,这里有另外一个问题 // 就是 sc.next() 会一直往下读, // 应该把 id 读取出来然后判断 // 另外去重的话 Map<String, Student> 更合理 if (sc.next().equals(list.get(i).getId()) ){ return temp; } } st.setId(sc.next()); System.out.println("请输入学生姓名"); st.setName(sc.next()); System.out.println("请输入学生年龄"); st.setAge(sc.nextInt()); System.out.println("请输入学生住址"); st.setAddress(sc.next()); temp = 1; return temp;}
问题内容: 我在停止“供稿”时遇到问题;cancel参数似乎对after方法没有任何影响。尽管“进纸停止”已打印到控制台。 我尝试使用一个按钮将启动供稿,而另一个按钮将停止供稿。 随着输出: 问题答案: 问题是,即使你打电话与停止循环,已经有等待消防挂起的工作。按下停止按钮不会触发新的作业,但是旧的作业仍然存在,并且当它自己调用时,它将传入False,这将导致循环继续。 您需要取消待处理的作业,以
问题内容: 我有一个看起来像这样的代码: 问题是,一旦执行,在关闭弹出的窗口之前,什么都不会发生。 如何继续运行代码? 问题答案: 那是有意的。您要做的是在调用app.exec()之前使用信号/插槽,Qt类中的代码或生成线程。 信号和插槽是您与Qt交互的实际方式。基本上,信号是任何“事件”或自定义“事件”,并且可以将插槽视为“事件处理程序”。例如,当某人按下GUI上的按钮时,它会创建一个信号,以寻
问题内容: 基本上,我想做两件事: 我想知道是否可以使用Java代码运行Java代码。 如果可能的话,如何在屏幕上显示输出?(无论是常规输出还是错误或异常) 我知道这是可能的,因为我的一位前辈已经做到了,但是我不知道他是如何做到的。也许他使用了Java的内置类之一。 注意:用户将代码写入一些文本文件中,然后将文件内容存储在某个变量中,然后也许运行该代码。 问题答案: 是的,有可能。 步骤1:编译代
问题内容: 我查看了Javadoc,但找不到与此相关的信息。 如果该方法中的代码告诉我这样做,我希望应用程序停止执行该方法。 如果那句话令人困惑,这就是我想在代码中执行的操作: 因此,如果布尔值为true,则该方法必须停止执行其他代码。 这只是一个例子。我还有其他方法可以完成我在应用程序中要完成的工作,但是如果可能的话,肯定会有所帮助。 问题答案: 做就是了: 只写是多余的(例如,这样就不会误写)
问题内容: 我正在使用我的应用程序拨打电话。 一段时间后有什么办法可以终止通话?还是在ACTION_CALL开始之前设置一个计时器? 我正在使用Prasanta博客中的以下代码,但由于某些原因,导致出现以下错误。有什么建议? 无法解决 问题答案: 您的问题已被问过很多次了。简短的答案是,没有官方的方法可以做到这一点。 在一个问题中,有人建议打开飞行模式(应用程序当然需要权限才能执行此操作)。这很粗
问题内容: 如何在Linux和Windows中正常停止Java进程? 什么时候被调用,什么时候不被调用? 终结器又如何呢? 我可以从外壳向Java进程发送某种信号吗? 我正在寻找最好的便携式解决方案。 问题答案: 在所有未强制终止VM的情况下,都会执行关机挂钩。因此,如果要发出“标准” kill(通过kill命令),则它们将执行。同样,它们将在调用后执行。 但是,如果将其强行杀死(),它们将不会执