2015-11-06 58 views
-1

代码是这样的:扫描仪对字符串和int

import java.util.Scanner;

公共类Prelab1 {

public static void main(String[] args) 
{ 
    int programcase = 0; 
    Scanner inputscan = new Scanner(System.in); 

    System.out.print("Enter case number: "); 
    programcase = inputscan.nextInt(); 

    switch(programcase) 
    { 
    case 1: 
     { 
      //////////////////////////////////////////////////////////////////////////////////// 

      //WRITE THE CODE OF CASE 1 HERE 
      Scanner scan = new Scanner(System.in); 

      System.out.println("Enter first student's name: "); 
      String name1 = scan.nextLine(); 
      System.out.println("Enter " + name1 + "'s first grade: "); 
      int firstGrade = scan.nextInt(); 
      System.out.println("Enter " + name1 + "'s second lab grade: "); 
      int secondGrade = scan.nextInt(); 
      System.out.println("Enter " + name1 + "'s third lab grade: "); 
      int thirdGrade = scan.nextInt(); 
      System.out.println("Enter " + name1 + "'s fourth lab grade: "); 
      int fourthGrade = scan.nextInt(); 

      System.out.println("Enter second student's name: "); 
      int name2 = scan.nextInt(); 
      System.out.println("Enter " + name2 + "'s first lab grade: "); 
      int secondfirstGrade = scan.nextInt(); 
      System.out.println("Enter " + name2 + "'s second lab grade: "); 
      int secondsecondGrade = scan.nextInt(); 
      System.out.println("Enter " + name2 + "'s third lab grade: "); 
      int secondthirdGrade = scan.nextInt(); 
      System.out.println("Enter " + name2 + "'s fourth lab grade: "); 
      int secondfourthGrade = scan.nextInt(); 

      System.out.println("/+CENG 111 Course Student List+" + "\\"); 
      System.out.println("Name\t\t\t/Lab1\t/Lab2\t/Lab3\t/Lab4"); 
      System.out.println(name1 + "\t\t\t/" + firstGrade + "\t/" + secondGrade + "\t/" + thirdGrade + "\t/" + fourthGrade); 
      System.out.println(name2 + "\t\t\t/" + secondfirstGrade + "\t/" + secondsecondGrade + "\t/" + secondthirdGrade + "\t/" + secondfourthGrade); 

      scan.close(); 

它仍在继续,但它不是我important.When运行一切顺利,但在那里,它说: 进入第二个学生的名字: 进入第二个学生实验室级:

因此,它不等我写出它跳到另一个问题的名称。我该如何解决这个问题?

回答

-3

这是Scanner类的不当行为。它无法正确清除其缓冲区,并期望所有输入具有相同的数据类型。

要解决此问题,请改用BufferedReader。

BufferedReader x = new BufferedReader (new InputStreamReader (System.in)); 

int a = Integer.parseInt (x.readLine()); 

String n = x.readLine(); 
+0

“这是扫描仪类的错误行为。”不,这不对。你的答案根本错误。 – Seelenvirtuose

+0

*“无法正确清除缓冲区”*只有在能够正确使用此类的情况下才能这样做。阅读JavaDoc(也许一些教程)应该可以帮助你。 – Tom