Java 当代码从循环中重复时,用户输入选项将丢失
由于我不知道的原因,当我的代码循环回开始时,一些字符串输入选项丢失。。这是我的问题Java 当代码从循环中重复时,用户输入选项将丢失,java,Java,由于我不知道的原因,当我的代码循环回开始时,一些字符串输入选项丢失。。这是我的问题 Enter student's name: Bob Enter student's subject: Maths Enter student's number: 12345 Enter level student last completed (0-3): 0 Would you like to enter data for another student? Yes/No Yes Enter stude
Enter student's name:
Bob
Enter student's subject:
Maths
Enter student's number:
12345
Enter level student last completed (0-3):
0
Would you like to enter data for another student? Yes/No
Yes
Enter student's name:
Enter student's subject:
English
Enter student's number:
55677
Enter level student last completed (0-3):
0
正如您所看到的,当循环再次循环以允许用户再次输入详细信息时,它只是打印出来
Enter student's name:
Enter student's subject:
English
Enter student's number:
55677
Enter level student last completed (0-3):
0
同时,只允许输入科目而不允许输入姓名,跳过学生姓名的输入选项。但之后的字段正常工作
这是我的密码
import java.util.*;
public class StudentData
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
ArrayList<Student> studentList = new ArrayList<Student>();
String yesNo; // = "true";
int level = 0;
do
{
int averageResult = 0;
int result1 = 0;
int result2 = 0;
int result3 = 0;
// in.next();
System.out.println("Enter student's name: ");
String name = in.nextLine();
System.out.println("Enter student's subject: ");
String subject = in.nextLine();
System.out.println("Enter student's number: ");
int number = in.nextInt();
do
{
System.out.println("Enter level student last completed (0-3): ");
level = in.nextInt();
}
while (level > 3 || level < 0);
if (level > 0)
{
if (level == 3)
{
System.out.println("Enter result for level 3: ");
result3 = in.nextInt();
System.out.println("Enter result for level 2: ");
result2 = in.nextInt();
System.out.println("Enter result for level 1: ");
result1 = in.nextInt();
}
else if (level == 2)
{
System.out.println("Enter result for level 2: ");
result2 = in.nextInt();
System.out.println("Enter result for level 1: ");
result1 = in.nextInt();
}
else if (level == 1)
{
System.out.println("Enter result for level 1: ");
result1 = in.nextInt();
}
// averageResult = 0;
averageResult= ((result1 + result2 + result3) / level);
}
// System.out.println(averageResult);
else
{
}
Student s = new Student(name,subject,number,level,result1,result2,result3,averageResult);
studentList.add(s);
do
{
System.out.println("Would you like to enter data for another student? Yes/No ");
yesNo = in.next();
}
while (!yesNo.equalsIgnoreCase("YES") && !yesNo.equalsIgnoreCase("NO"));
}
while (yesNo.equalsIgnoreCase("YES"));
for(int i = 0; i < studentList.size(); i++)
{
System.out.println("Student's name: "+studentList.get(i).getName());
System.out.println("Student's subject: "+ studentList.get(i).getSubject());
System.out.println("Student number: "+studentList.get(i).getNumber());
System.out.println("Level which student has completed: "+studentList.get(i).getLevel());
System.out.println("Result for level 1:"+studentList.get(i).getResults1());
System.out.println("Result for level 2:"+studentList.get(i).getResults2());
System.out.println("Result for level 3:"+studentList.get(i).getResults3());
System.out.println("Average result for all completed levels: "+studentList.get(i).getAverageResults());
System.out.println();
}
}
}
import java.util.*;
公共班级学生数据
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
ArrayList studentList=新建ArrayList();
字符串yesNo;//=“true”;
智力水平=0;
做
{
int averageResult=0;
int result1=0;
int result2=0;
int result3=0;
//in.next();
System.out.println(“输入学生姓名:”);
字符串名称=in.nextLine();
System.out.println(“输入学生的主题:”);
字符串subject=in.nextLine();
System.out.println(“输入学生编号:”);
int number=in.nextInt();
做
{
System.out.println(“输入上次完成的水平学生(0-3):”;
级别=in.nextInt();
}
而(水平>3 | |水平<0);
如果(级别>0)
{
如果(级别==3)
{
System.out.println(“输入级别3的结果:”);
result3=in.nextInt();
System.out.println(“输入级别2的结果:”);
result2=in.nextInt();
System.out.println(“输入级别1的结果:”);
result1=in.nextInt();
}
否则如果(级别==2)
{
System.out.println(“输入级别2的结果:”);
result2=in.nextInt();
System.out.println(“输入级别1的结果:”);
result1=in.nextInt();
}
否则,如果(级别==1)
{
System.out.println(“输入级别1的结果:”);
result1=in.nextInt();
}
//平均结果=0;
平均结果=((结果1+结果2+结果3)/level);
}
//System.out.println(averageResult);
其他的
{
}
学生s=新学生(姓名、科目、编号、级别、结果1、结果2、结果3、平均结果);
学生名单。添加;
做
{
System.out.println(“您想为另一个学生输入数据吗?是/否”);
yesNo=in.next();
}
而(!yesNo.equalsIgnoreCase(“YES”)和&!yesNo.equalsIgnoreCase(“NO”);
}
而(是)(是)否(是);;
对于(int i=0;i
学生姓名循环后,如何允许输入?
谢谢我以前也遇到过同样的问题。我想这是scanner的nextLine()方法的问题。
解决此问题的一个简单方法是在遇到问题时使用nextLine()方法进行复制,或者可以使用另一个对象从用户获取输入 与其使用nextLine()来获取名称和主题,不如使用next()来解决您的问题执行以下更改,它将按预期工作
Scanner in; //do not create Scanner instance here
ArrayList<Student> studentList = new ArrayList<Student>();
String yesNo; // = "true";
int level = 0;
do
{
in = new Scanner(System.in);//instead create here
Scanner-in//不要在此处创建扫描仪实例
ArrayList studentList=新建ArrayList();
字符串是否;//=“真实”;
智力水平=0;
做
{
in=新扫描仪(System.in);//改为在此处创建