Question

I'm trying to import data from a file to array using string tokenizer.

Data format in file is

AA,BB,CC
AA,BB,CC

But i keep getting error

Exception in thread "main" java.util.NoSuchElementException
    at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
    at java.util.StringTokenizer.nextElement(StringTokenizer.java:407)
    at main.main(main.java:36)

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.StringTokenizer;


public class main {
public static void main(String[] args) throws FileNotFoundException {

    Scanner input;
    String line;
    int x=0;
    String [] cName = new String [100];
    String [] cMascot = new String [100];
    String [] cAlias = new String [100];





         input = new Scanner(new File("test.txt"));

         while(input.hasNextLine()) {

             line = input.nextLine();
             StringTokenizer strings = new StringTokenizer(line,",");

             while (strings.hasMoreElements()) {
                 cName[x] = strings.nextElement().toString();
                 cMascot[x] = strings.nextElement().toString();
                 cAlias[x] = strings.nextElement().toString();
                 x++;
             }

         }


}

}

So any help would be appreciated. I cant use array list so that out of the context

Was it helpful?

Solution 2

I suggest you use readLine and split ...

public static void main(String[] args) throws FileNotFoundException {

    String line;
    int x=0;
    String [] cName = new String [100];
    String [] cMascot = new String [100];
    String [] cAlias = new String [100];

    try (BufferedReader input = new BufferedReader(new FileStreamReader("test.txt"))) {

         while ((line = input.readLine())!=null) {

             cName[x] = line.split(",")[0];
             cMascot[x] = line.split(",")[1];
             cAlias[x] = line.split(",")[2];
             x++;
         }
    }

}

OTHER TIPS

you can't call .nextElement() many times in while statement; befor each of them .hasNextLine() must be called

You can have below code useful too :

public static void main(String[] args) throws FileNotFoundException {

    Scanner input;
    String line;

    String cMascot = null;
    String cAlias = null;
    String cName = null;

    input = new Scanner(new File("test.txt"));
    while (input.hasNextLine()) {
        line = input.nextLine();
        StringTokenizer strings = new StringTokenizer(line, ",");

        while (strings.hasMoreElements()) {
            cName = strings.nextToken();
            cMascot = strings.nextToken();
            cAlias = strings.nextToken();
            System.out.println("cName :" + cName);
            System.out.println("cMascot :" + cMascot);
            System.out.println("cAlias :" + cAlias);
        }
    }

}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top