Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 列表中的项,但无法稍后获取它_Java - Fatal编程技术网

Java 列表中的项,但无法稍后获取它

Java 列表中的项,但无法稍后获取它,java,Java,我正在做作业。现在,我有一张名单。我有一个函数可以将名称添加到列表中,另一个函数可以获取名称。但是,它只得到一个空字符串 我尝试通过获取数组的size()进行调试,当我添加到数组中时,数组的size()会增加,但是我无法获取我添加的项的内容(如果它在那里的话) import java.util.List; 导入java.util.Scanner; 公共班机 { 公共静态void main(字符串参数[]){ List studentNames=new ArrayList(); List stud

我正在做作业。现在,我有一张名单。我有一个函数可以将名称添加到列表中,另一个函数可以获取名称。但是,它只得到一个空字符串

我尝试通过获取数组的size()进行调试,当我添加到数组中时,数组的size()会增加,但是我无法获取我添加的项的内容(如果它在那里的话)

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