Search code examples
javatype-mismatchinputmismatchexception

Java Input Mismatch Exception with a specialized txt file


I am working on a program and I need to scan in a txt file. The txt file is guaranteed to follow a particular format in terms up where and when different types occur. I try to take advantage of this in my program and use a scanner to put the parts I know are ints into ints, along with doubles and strings. When I run my program It tells me I have a type mismatch exception, I know that due to the formatting of the txt file that all my types match up so how do I make the IDE think this is okay. Here's a block of the problematic code is that helps.

ArrayList<Student>studentList=new ArrayList<Student>();//makes a new Array list that we can fill with students.
    FileInputStream in=new FileInputStream("studentList.txt");//inputs the text file we want into a File Input Stream
    Scanner scnr=new Scanner(in);//Scanner using the Input Stream
    for(int i=0;i<scnr.nextInt();i++)//we know the first number is the number of minor students so we read in a new minor that number of times
    {
        Undergrad j=new Undergrad();//make a new undergrad
        j.setDegreeType("MINOR");//make the degree type minor because we know everyone in this loop is a minor.
        j.setFirstName(scnr.next());//we know the next thing is the student's first name
        j.setLastName(scnr.next());//we know the next thing is the student's last name
        j.setID(scnr.nextInt());//we know the next thing is the student's ID
        j.setGPA(scnr.nextDouble());//we know the next thing is the student's GPA
        j.setCreditHours(scnr.nextDouble());//we know the next thing is the student's credit hours
        studentList.add(j);//Finally, we add j to the arraylist, once it has all the elements it needs
    }

Solution

  • Computer programs do exactly what you tell them to do.

    If you create a program that expects certain input, and that program tells you "unexpected input"; then are exactly two logical explanations:

    1. Your assumption about the layout of the input (that you put in your program) were wrong
    2. The assumptions are correct, but unfortunately the input data doesn't care about that

    Long story short: it is not the IDE that gets things wrong here.

    Thus the "strategy" here is:

    1. open your text file in an editor
    2. open your source code in your IDE
    3. Run a debugger; or "run your code manually"; meaning: walk through the instructions one by one; and for each scanner operation, check what the scanner should return; and what the file actually contains in that place