Java Probably very easy question about isNaN() java

  • Thread starter Thread starter BiGyElLoWhAt
  • Start date Start date
  • Tags Tags
    Java
AI Thread Summary
The discussion revolves around an error encountered while using a Scanner in Java to read and tokenize a text document containing student data. The error message indicates that the method isNaN(String) is undefined, highlighting a misunderstanding of the isNaN function, which expects a number, not a string. Participants suggest that the original poster (OP) likely needs to implement an integer parsing method, such as Integer.parseInt(), to convert strings to integers, which requires exception handling for non-integer values.The OP's code attempts to read a file with sections of student data, but issues arise when filling the scores array and creating Student objects. The OP questions whether using next() in a try block would skip tokens, which could affect the assignment of string values for names. The conversation emphasizes the importance of correctly parsing input and handling exceptions to avoid crashes when creating student records.
BiGyElLoWhAt
Gold Member
Messages
1,637
Reaction score
138
this is throwing me an error
while(! isNaN(s.next()))
"The method isNaN(String) is undefined for the type ProgressReport"
s is a scanner.

I'm just trying to tokenize a text doc of the form
int
String int ... int
...
String int ... int
int
String int ... int
...
String int ... int
etc.

Oh yea, the question...
Why? What am I doing, or what do I need to do?
 
Technology news on Phys.org
isNaN expects a number, not a string. Did you try converting the string the a number first?
 
mfb said:
isNaN expects a number, not a string. Did you try converting the string the a number first?

I also assume that the OP isn't trying to check for NaN but is actually wants some sort of IsInteger function like Integer.parseInt() but to that one on his data requires exception handling.
 
Last edited:
Yea, I changed how I'm doing it.
Java:
import java.io.*;
import java.util.*;
import java.lang.*;

public class ProgressReport{   
   
    File file = new File("grades.txt");   
    Student[][] student;
    int[] scores;
    String name;
   
   
    public ProgressReport() throws FileNotFoundException{
        readInputFile();
    }
   
   
    private void readInputFile() throws FileNotFoundException{
        Scanner s = new Scanner(file);   
        Scanner line;
        int[] sec = {0,0};
        int k = -1;
        int j = -1;
       
        while(s.hasNextLine())
        {
            String str = s.nextLine();
            k++;
            if(str.length() == 1)
            {
                j++;
                sec[j] = Integer.parseInt(str);
            }
            else{
                line = new Scanner(str);
                while(line.hasNext())
                {
                    try
                    {
                        for(int i =0; ;i++)
                        {   
                            scores[i] = Integer.parseInt(line.next());
                        }
                    }
                    catch(Exception e)
                    {
                        name = line.next();
                    }
                   
                   
                }
                student[j][k] = new Student(name, scores);

               
            }
           
           
        }
    }
}
 
Haven't done java in a while, so I might be doing things stupidly.

If I use next() in a try block, is that going to skip that token? So in other words, will this give me a string number for my name value?
 
The file I'm working with is:
Section number //single digit
Name Score Score Score Score Score //Student data
Student data
...
Section number
student data
student data
 
Hmmm... I'm having some errors. I'm getting the string correctly, but I'm not filling my scores variable, and am crashing everytime I try to create a student.
 

Similar threads

Back
Top