Taihong Wang
Taihong Wang

Reputation: 35

Use File IO and make data shows in clear way

I try use file IO declare obj that I create for baseball team information, but I dont know why the arrayList save the same data again and again, I want each data save once in arraylist. thank you

public static void main(String[] args) throws IOException{
    Scanner in = new Scanner(System.in);
    String fileName = "abc.txt";     //file name
    // System.out.println("Please Enter The Source File Name:: ");
    // fileName = in.nextLine();


    ArrayList<Team> group = new ArrayList<Team>();  //use arrayList save data from obj 

    File file = new File(fileName);      //open file
    Scanner scan = new Scanner(file);

    while (scan.hasNext()) {             //read file to string and split it
         String str = scan.nextLine();
         String[] arr = str.split(",");

         for (int i = 0; i < file.length(); i++) {     //use split part to declear obj"Team"
              int n = Integer.parseInt(arr[3]);
              int m = Integer.parseInt(arr[4]);
              Team tm = new Team(arr[0], arr[1], arr[2], n, m);
              group.add(tm);
         }
         //   scan.close();   
         //try to close but shows error"Scanner closed"
    }

    for(int i =0; i < group.size(); i++) {  //check arrayList work well, but fail
         System.out.println(group.get(i).getName());
    }

}

Upvotes: 3

Views: 66

Answers (3)

gvsk225
gvsk225

Reputation: 11

  **try this :**




import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;


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

                    BufferedReader bf=null;

                    ArrayList al=new ArrayList();
                    try
                    {
                        String currentLine;

                        bf=new BufferedReader(new FileReader("D:\\abc.txt"));

                        while((currentLine=bf.readLine())!=null)
                        {
                            System.out.println(currentLine);
                            String str=currentLine;
                            String[] arr=str.split(",");

                            int n=Integer.parseInt(arr[3]);
                            int m=Integer.parseInt(arr[4]);
                            Team t=new Team(arr[0],arr[1], arr[2], n, m);
                            al.add(t);

                        }

                    }


                    catch(Exception e)
                    {

                    e.printStackTrace();
                    }

                    finally
                    {
                        try {
                            if (bf != null)bf.close();
                        } catch (IOException ex) {
                            ex.printStackTrace();
                        }
                    }

                    for(int i =0; i < al.size(); i++){        

                        System.out.println(al.get(i));
                    }

        }



    }

class Team
{
    private String First;
    private String next;
    private String third;
    private int won;
    private int lost;

    public Team(String F,String N,String T,int w,int l)
    {

    First=F;
    next=N;
    third=T;
    won=w;
    lost=l;
    }

    @Override
    public String toString() {
        return "Team [First=" + First + ", next=" + next + ", third=" + third
                + ", won=" + won + ", lost=" + lost + "]";
    }

    public String getFirst() {
        return First;
    }

    public void setFirst(String first) {
        First = first;
    }

    public String getNext() {
        return next;
    }

    public void setNext(String next) {
        this.next = next;
    }

    public String getThird() {
        return third;
    }

    public void setThird(String third) {
        this.third = third;
    }

    public int getWon() {
        return won;
    }

    public void setWon(int won) {
        this.won = won;
    }

    public int getLost() {
        return lost;
    }

    public void setLost(int lost) {
        this.lost = lost;
    }

}

Upvotes: 1

sayee
sayee

Reputation: 46

try this :

while (scan.hasNext()) {

            String str = scan.nextLine();
            String[] arr = str.split(",");

            int n = Integer.parseInt(arr[3]);
            int m = Integer.parseInt(arr[4].trim()); // Use trim()to avoid NumberFormatException                           
            Team tm = new Team(arr[0], arr[1], arr[2], n, m);
            group.add(tm);


    }

Upvotes: 0

z0nam
z0nam

Reputation: 545

In your code, for loop inside while loop seems to make duplicated entries

while (scan.hasNext()) {             //read file to string and split it
            String str = scan.nextLine();
            String[] arr = str.split(",");

            int n = Integer.parseInt(arr[3]);
            int m = Integer.parseInt(arr[4]);
            Team tm = new Team(arr[0], arr[1], arr[2], n, m);
            group.add(tm);

        }

Upvotes: 1

Related Questions