2014-02-06 54 views
0

我得到一個輸入不匹配錯誤,但我不知道爲什麼。它正在另一臺計算機上工作,但似乎沒有在我的筆記本電腦上工作。起初,我認爲這可能是我的txt文件,但這不是原因。輸入不匹配異常錯誤

import java.io.*; 
import java.util.*; 
public class FindGrade { 
public static final int NUM_SCORE_TYPES = 5; 

public static void main(String[] args) { 
    Scanner scan = null; 
    int[] quizArray = null;  
    int[] labArray = null;  
    int[] attendance = null; 
    int[] midterms = null; 
    int quizgrade =0; 
    int labgrade=0; 
    int attendance_1=0; 
    int midterms_1 =0; 
    String name; 


    try { 
     scan = new Scanner(new File("input.txt")); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     return; 
    } 

    // each iteration is for single exam type (ie: Quizzes is the 1st one) 
    for (int i = 0; i < NUM_SCORE_TYPES; i++) { 

     name = scan.next(); 
     int numScores = scan.nextInt(); 
     int maxGrade = scan.nextInt(); 

     if (name.equals("Quizzes")) { 
      quizArray = new int[numScores]; 
      readScores(quizArray, numScores, scan); 


     } 

     else if (name.equals("Labs")) { 
      labArray = new int[numScores]; 
      readScores(labArray, numScores, scan); 

     } 
     else if (name.equals("Lab_attendance")) { 
      attendance = new int[numScores]; 
      readScores(attendance, numScores, scan); 

     } 
     else if (name.equals("Midterms")) { 
      midterms = new int[numScores]; 
      readScores(midterms, numScores, scan); 

     } 

    } 

} 


public static void readScores(int[] scoreArray, int numScores, Scanner scan) { 
    for (int i = 0; i < numScores; i++) { 
     scoreArray[i] = scan.nextInt(); 
    } 
} 

public static void average(double [] scoreArray, int numScores){ 
    double sum=0; 
    for(int i=0; i< scoreArray.length; i++){ 
     sum += scoreArray[i]; 
    } 
    double average = sum/numScores; 

    System.out.println(sum + " " + average); 



} 

}

輸出:

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:840) 
    at java.util.Scanner.next(Scanner.java:1461) 
    at java.util.Scanner.nextInt(Scanner.java:2091) 
    at java.util.Scanner.nextInt(Scanner.java:2050) 
    at FindGrade.main(FindGrade.java:33) 

輸入文件:

Quizzes 8 10 
5 8 9 10 4 0 10 7 
Labs 6 100 
95 90 100 87 63 92 
Lab_attendance 16 1 
1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 
Midterms 2 100 
87 94 
Final 0 100 
+0

好像你的'Scanner'正在從文本文件中讀取的內容不是int或者太大而不能存儲到int中。你可以在這裏放置一個示例輸入文件嗎? –

+0

你是否參考這個問題你的問題http://stackoverflow.com/questions/14027537/input-mismatch-exception?rq=1 –

+0

我懷疑這個「name = scan.next();」和「if(name。等於(「測驗」))「讓我檢查 –

回答

0

你的代碼是工作的罰款與您發佈的數據。 如果變量「name」將被賦予與您期望的5個名稱不同的值,如「Quizze」而不是「Quizzes」,則會發生此錯誤。 在這種情況下,你的代碼邏輯被破壞,你會有這個錯誤。這是一個可能的根本原因。