Java 列表中的项,但无法稍后获取它
我正在做作业。现在,我有一张名单。我有一个函数可以将名称添加到列表中,另一个函数可以获取名称。但是,它只得到一个空字符串 我尝试通过获取数组的size()进行调试,当我添加到数组中时,数组的size()会增加,但是我无法获取我添加的项的内容(如果它在那里的话)Java 列表中的项,但无法稍后获取它,java,Java,我正在做作业。现在,我有一张名单。我有一个函数可以将名称添加到列表中,另一个函数可以获取名称。但是,它只得到一个空字符串 我尝试通过获取数组的size()进行调试,当我添加到数组中时,数组的size()会增加,但是我无法获取我添加的项的内容(如果它在那里的话) import java.util.List; 导入java.util.Scanner; 公共班机 { 公共静态void main(字符串参数[]){ List studentNames=new ArrayList(); List stud
import java.util.List;
导入java.util.Scanner;
公共班机
{
公共静态void main(字符串参数[]){
List studentNames=new ArrayList();
List studentScores=新建ArrayList();
List assignmentNames=new ArrayList();
List assignmentMaxPoints=new ArrayList();
扫描仪输入=新扫描仪(系统输入);
while(true){
System.out.println(“”);
系统输出打印项次(“------------------------------”);
系统输出打印(“1)新生”);
System.out.println(“2)编辑学生姓名”);
System.out.println(“3)删除学生”);
System.out.println(“4)新分配”);
System.out.println(“5)视图学生”);
System.out.println(“6)视图平均值”);
系统输出打印项次(“------------------------------”);
如果(0!=studentNames.size()){
System.out.println(学生姓名);
}
int choice=in.nextInt();
如果(选项==1){
System.out.println(“”);
系统输出打印项次(“------------------------------”);
System.out.println(“输入学生姓名:”);
系统输出打印项次(“------------------------------”);
in.next();
字符串名称=in.nextLine();
学生姓名。添加(姓名);
}
如果(选项==2){
System.out.println(“”);
系统输出打印项次(“------------------------------”);
System.out.println(“输入旧学生姓名:”);
系统输出打印项次(“------------------------------”);
in.next();
字符串oldName=in.nextLine();
System.out.println(“”);
系统输出打印项次(“------------------------------”);
System.out.println(“输入新学生姓名:”);
系统输出打印项次(“------------------------------”);
in.next();
字符串newName=in.nextLine();
对于(int nameIndex=0;nameIndex
我希望第六个选项的代码以StudentName打印所有学生,但它只打印空行。您没有描述您的输入,但看起来问题出在选项1中。您有两个对scanner的调用,
in.next()
从输入返回第一个单词(直到空格),以及in.readLine()
从输入返回整行。要修复此问题,只需删除.next()中的
有关更多信息,您可以查看它没有显示任何内容,因为您接收输入的方式不同。让我试着解释一下。当您在.next()中写入
时,
,扫描仪会尝试在空格前读取输入终端上的单词。假设您输入了Peter
作为学生的姓名,in.next()
将读取Peter,但由于您没有将其分配给任何变量,因此不会使用它。然后您在.nextLine()中执行了String name=in
,这将尝试读取终端下一行中的输入,该输入将是空字符串,因为您没有给它任何输入
让您的代码正常工作。写
String name = in.next();
除去
String name = in.nextLine();
现在应该可以了
请注意,由于向数组中添加了空字符串,因此数组的大小会增加。请在将数据放入列表之前验证数据。不过,此问题可能与使用
==
比较字符串有关。不过,你还没有提供足够的背景来了解情况是否如此。需要使用equals
比较字符串。改变一下,看看会发生什么。@Carcigenicate我改变了,但没什么不同。我一直在使用第一个选项进行测试,然后是第六个选项。这两个部分都没有==来比较字符串,所以我不明白为什么会有什么不同。您是否在选项1中测试了.nextLine()中的
功能?您需要阅读此内容和此内容来解决问题。因为选项1和选项2都有类似于上面链接的bug。所以,试着通过阅读以上两个链接来解决问题。
String name = in.nextLine();