2015-11-06 111 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