Java初学者:nextLine困境

时间:2014-12-08 03:55:20

标签: java

我见过几个类似于这个问题的帖子,但很难找到我特定问题的解决方案。

我写的代码是教师输入学生的姓名和成绩,并获得最终字母成绩的输出。

我遇到问题的区域是输入的姓氏与第一个名称输入组合在一起,而不是单独询问问题。如何提示这些问题作为单独的问题出现?

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

   }

}

4 个答案:

答案 0 :(得分:3)

由于sFirstNamelFirstName,每个都应包含一个词,您应该使用

  

下一步()

     

查找并返回此扫描仪的下一个完整令牌。

而不是

  

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