1

I have a .CSV file with a row of contents:

Detroit 25  4   7   W   Green Bay   7   7   4   L

I create a new Scanner with the name of input

Scanner input = new Scanner(file);  //file here is the .csv file

If I print input.next(), this is what is displayed:

Detroit,25,4,7,W,Green
 Bay,7,7,4,L

If I create a new Array and specify a delimiter as follows:

String[] list = input.next().split(",");

And then print an index of the array

System.out.println(list[2]);

I get this:

Detroit,25,4,7,W,Green
7

Instead of 4. How do I put each value of the .csv in its own logical index? Example:

list[0] = Detroit list[1] = 25 and so on.

This is my full code:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.stage.FileChooser;
import javafx.geometry.*;
import java.util.*;
import java.io.*;

public class POS extends Application
{
   private Button runBtn = new Button("Run");
   @Override
   public void start(Stage stage)
   {
      GridPane pane = new GridPane();

      VBox vBox = new VBox(20);
      vBox.setPadding(new Insets(15));
      Button selectBtn = new Button("Select File");
      selectBtn.setStyle("-fx-font: 22 arial; -fx-base: #b6e7c9;");
      vBox.getChildren().add(selectBtn);

      selectBtn.setOnAction(e->
      {
         FileChooser fileChooser = new FileChooser();
         fileChooser.setTitle("Open Resource File");
         FileChooser.ExtensionFilter extFilter = 
                        new FileChooser.ExtensionFilter("TEXT files (*.csv)", "*.CSV", ".xlsv", ".XLSV");
                fileChooser.getExtensionFilters().add(extFilter);
         File file = fileChooser.showOpenDialog(stage);




            run(file);


      });

      RadioButton weekBtn = new RadioButton("Current Week");  
      RadioButton seasonBtn = new RadioButton("Entire Season");

      runBtn.setStyle("-fx-font: 22 arial; -fx-base: #b6e7c9;");



      seasonBtn.setDisable(true);
      vBox.getChildren().add(weekBtn);
      vBox.getChildren().add(seasonBtn);
      vBox.getChildren().add(runBtn);

      pane.add(vBox, 0, 0);
      Scene scene = new Scene(pane, 500, 200);
      stage.setScene(scene);
      stage.setTitle("POS");
      stage.show();
   }
   public void run(File file)
   {
      runBtn.setOnAction(e->
      {
         try
         {
            Scanner input = new Scanner(file);
            input.nextLine();
            System.out.println(input.next());
            sortFile(file, input);

            input.close();
         }

         catch (InputMismatchException ex)
         {
            System.out.println("Error you seem to have typed the wrong type of file");
         }
         catch(IOException ex)
         {
            System.out.println("Error, file could not be found");
         }


      });
   }
   public ArrayList<String> sortFile(File file, Scanner input)
   {
     String[] list = input.next().split(",");
     System.out.println(list[2]);
      if (input.hasNext())
      {
         return null;
      }
      return null;
   }

}
Bytes
  • 691
  • 1
  • 7
  • 22
  • Probably you are getting the output from `Bay,7,7,4,L` line. – Atri Dec 05 '15 at 03:21
  • @ElliottFrisch I have added my full code – Bytes Dec 05 '15 at 03:21
  • Your csv file doesn't have a "`,`" whereas you are saying `input.next()` prints `Detroit,25,4,7,W,Green Bay,7,7,4,L`. This is not possible. – Atri Dec 05 '15 at 03:26
  • With .csv files, columns for each row are separated with "," like this: http://stackoverflow.com/questions/29886714/reading-a-csv-file-using-scanner – Bytes Dec 05 '15 at 03:58

1 Answers1

0

It seems that your cvs file is in tab delimited format. You should use:

String[] list = input.nextLine().split("\t");

and it should work.

m.aibin
  • 3,528
  • 4
  • 28
  • 47