我见过几个类似于这个问题的帖子,但很难找到我特定问题的解决方案。
我写的代码是教师输入学生的姓名和成绩,并获得最终字母成绩的输出。
我遇到问题的区域是输入的姓氏与第一个名称输入组合在一起,而不是单独询问问题。如何提示这些问题作为单独的问题出现?
import java.util.*;
public class AssignmentTest {
public static void main (String [] args) {
Scanner console = new Scanner (System.in);
int iStudentID = 0; //StudentID
String sLastName = ""; //Last Name
String sFirstName = ""; //First Name
int iAssignmentsScore = 0; //Assignment Input
int iQuizzesScore = 0; //Quizzes Input
int iMidtermsScore = 0; //Midterm Input
int iFinalScore = 0;; //Final Input
//USER INPUT
//StudentID Input
System.out.println("Please enter the StudentID: ");
iStudentID = console.nextInt() ;
//Last Name Input
System.out.println ("Please enter the student's last name: ");
sLastName = console.nextLine() ;
//First Name Input
System.out.println ("Please enter the student's first name: ");
sFirstName = console.nextLine() ;
//Assignment Input
System.out.println ("Please enter the student's assignment score: ");
iAssignmentsScore = console.nextInt() ;
//Quiz Input
System.out.println ("Please enter the student's quiz score: ");
iQuizzesScore = console.nextInt ();
//Midterm Input
System.out.println ("Please enter the student's midterm score: ");
iMidtermsScore = console.nextInt ();
//Final Input
System.out.println ("Please enter the student's final score: ");
iFinalScore = console.nextInt ();
}
}
答案 0 :(得分:3)
由于sFirstName
和lFirstName
,每个都应包含一个词,您应该使用
下一步()强>
查找并返回此扫描仪的下一个完整令牌。
而不是
<强> nextLine()强>
使此扫描程序超过当前行并返回该输入 被跳过了。
@madprogrammer有更好的解释:
实际上,问题出在 iStudentID = console.nextInt(); 之后, 缓冲区中仍然有一个新的行字符,所以当时 sLastName = console.nextLine(); 被调用,它会跳过这个 自动(返回一个空字符串) - 这是一个非常常见的 错误
答案 1 :(得分:1)
试试这个
System.out.println ("Please enter the student's last name: ");
sLastName = console.nextLine() ;
console.nextLine();
答案 2 :(得分:0)
我认为这可能就像添加另一个换行符\n
一样简单。例如
System.out.println ("\nPlease enter the student's first name: ");
答案 3 :(得分:0)
你应该使用 next()而不是 nextLine()