Wczytanie x i y z kolejnych linii do tablic

0

Witam, mam do napisania program, w którym plik tekstowy ma wyglądać tak:

1  2
20  3
13  54
5   23 
67  123
12  24 

Pierwszą wartość z linii mam wczytać do 1. indeksu tablicy x, zaś drugą do 1. indeksu tablicy y. Pracuję nad tym już trochę czasu, ale dalej nie potrafię zlokalizować błędu w kodzie, mimo mnóstwa prób. Kod źródłowy wygląda tak:

 public static void main(String[] args) throws  IOException {
   File plik = new File("C:\\Users\\Paweł\\Desktop\\fun\\JavaApplication4\\fun.txt");
   if(plik.isFile())
   {
        LineNumberReader  lnr = new LineNumberReader(new FileReader(plik));
        lnr.skip(Long.MAX_VALUE);
        int countl = lnr.getLineNumber();
        System.out.println(countl);
        Scanner readf = new Scanner(new File("C:\\Users\\Paweł\\Desktop\\fun\\JavaApplication4\\fun.txt"));
        double[] x = new double[countl];
        double[] y = new double[countl];
        while(readf.hasNextLine())
        {
            String line = readf.nextLine();
            Scanner readl = new Scanner(line);
            
            for(int i = 0;i<countl;i++)
            {          
                if(readl.hasNextDouble())
                {
                    x[i] = readl.nextDouble();
                    if(readl.hasNextDouble())
                    {
                     y[i] = readl.nextDouble();        
                    }
                  
                   
               }
               else break;
                //System.out.println(x[i]); 
               
                //System.out.println(y[i]);
            }
            
        }
         
               System.out.println(y[0]);  
           
 } else System.out.printf("Plik nie istnieje!");
       
      
                
    }

  
    
}
 

Dodam jeszcze, że pierwszy element tablicy x, przyjmuje wartość ostatnią z "kolumny" x w pliku, tak samo jest w przypadku tablicy y(również w 1. indeksie pojawia się ostatnia wartość y).
Czy jest mi w stanie ktokolwiek pomóc? Z góry bardzo dziękuję;

0

Ta pętla

     for(int i = 0;i<countl;i++)
            {          
                if(readl.hasNextDouble())
                {
                    x[i] = readl.nextDouble();
                    if(readl.hasNextDouble())
                    {
                     y[i] = readl.nextDouble();        
                    }

jest bez sensu. Po odczytaniu kolejnego wiersza z pliku, powinno być jedno przypisanie w tablicy x, i jedno w tablicy y.
Twój sposób ustalania ilości wierszy ma usterkę, zwraca ilość wierszy zakończonych Enterem, a nie ilość wszystkich wierszy.

0

Dobra, poradziłem sobie, prymitywnie, bo prymitywnie, ale nie mam czasu, póki co, na poprawki, choć mam nadzieję, że kilka godzin przynajmniej mi na to zostanie.

Wielkie dzięki za pomoc.
Temat można zamknąć.

0
 File plik = new File("/home/init0/fun.txt");
        if(plik.isFile())
        {
            Scanner readf = new Scanner(new File("/home/init0/fun.txt"));
            ArrayList<Double> x = new ArrayList<Double>();
            ArrayList<Double> y = new ArrayList<Double>();
           // double[] x =new double[20];
           // double[] y =new double[20];
            int i=0,j=0;
            while(readf.hasNextLine())
            {
                j++;
                String line = readf.nextLine();
                Scanner readl = new Scanner(line);
                    while(readl.hasNextDouble())
                    {
                        i++;
                        x.add(readl.nextDouble());
                            y.add(readl.nextDouble());
                        }
                System.out.println(y.get(i-1)+"\t"+x.get(i-1));
            }
              System.out.printf("plik ma: \n# "+j+" %s",(j<10) ? "wiersze":"wierszy"); //może być nie musi 
        }else{
        System.out.printf("Plik nie istnieje!");
        }

rekompensata za nie przeczytany post, będę się tłumaczył nie miał pokolorowanej składni jak czytałem więc nic nie zrozumiałem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1