Forum zamknięte. Zapraszamy do grupy na Facebooku
Odpowiedz 
 
Ocena wątku:
  • 1 Głosów - 1 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z szukaniem wartosci w kolumnie
07-02-2012, 11:47 AM
Post: #1
Problem z szukaniem wartosci w kolumnie
Dzień dobry,

Mam pewien problem. Piszę program w javie, który pobiera plik .csv i zapisuje go do tablicy dwuwymiarowej. Teraz biorę sobie trzecią kolumnę z tej tabeli, która wygląda tak:

24678
24678
24678
24678
24678
24678
24677
24677
24677
24677
24677
24678
24678
24678
24678
24678
24678
24678
24678
24678
24678
24677
24677
24677
24677
24677
24677
24677
24677
24677
24677
24677
24677

Teraz chcę ją przeszukiwać aż trafię na zmianę wartości i zapisywać tylko tylko te wartości ostatnie przed zmianą. Czyli w tym wypadku wiersz 6, wiersz 11, wiersz 21. Kompletnie nie wiem jak to zrobić. Próbowałem coś w stylu:

for(int i = 0; i < table[3].length; i++)
if (table[1][3] != table[i][3]) {
system.out.println(table[i][3]);
} else {
system.out.println(table[1][3]);

Wiem, że to jest kompletnie źle ale nie mam na to pomysłu jak pobierać ostatnią wartość przed zmianą. Czy stworzyć dwie zmienne i porównywać po kolei czy jak...

Będę wdzięczny za każdą próbę pomocy. Z góry serdecznie dziękuję.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
07-02-2012, 07:37 PM
Post: #2
RE: Problem z szukaniem wartosci w kolumnie
a nie lepiej pierwszą nową?

'un mundo lleno de alegría' :)
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
07-09-2012, 01:34 PM
Post: #3
RE: Problem z szukaniem wartosci w kolumnie
jak mam to zrobić żeby usunąć to całe CSV table i żeby po prostu jak parametr podawać nazwe pliku i zeby mi tworzył nowy o tej samej nazwie. Nie wiem czy to sie w ogóle da zrobić... Sad

Kod:
import com.csvreader.CsvWriter;
import java.io.*;
import java.net.URL;
import java.util.Scanner;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

  public final class CSVTable extends JFrame {
     JTable table;
     DefaultTableModel model;
     JButton closeButton, webButton, ConvertButton;

   public CSVTable(String title, String source) throws NumberFormatException {

     InputStream is;
     try {
         if(source.indexOf("http")==0) {
             URL facultyURL = new URL(source);
             is = facultyURL.openStream();
         }
         else { //local file?
             File f = new File(source);
             is = new FileInputStream(f);
         }
         insertData(is);
         //table.getColumnModel().getColumn(0).setCellRenderer(new CustomCellRenderer());
     }
     catch(IOException ioe) {
         JOptionPane.showMessageDialog(this, ioe, "Error reading data", JOptionPane.ERROR_MESSAGE);
     }
}

void insertData(InputStream is) throws FileNotFoundException, IOException, NumberFormatException {
     Scanner scan = new Scanner(is);
            String n = scan.toString();
     String[][] line = new String[n.length()][13];
    String[] array = null;
    String line1;
         int row =0;
         int col =0;
    while (scan.hasNextLine()) {
         line1 = scan.nextLine();
         StringTokenizer st = new StringTokenizer(line1, ";", false);
         while (st.hasMoreTokens()) {
             line[row][col] = st.nextToken();
         col++;
         }
         col = 0;
         row++;
    }
            System.out.println("\n                \n");
            
                
            for (int i = 1; i < line.length; i++)
            {
                
                if(!line[i-1][2].equals(line[i][2])) {
                    int b = Integer.parseInt(line[i-1][1]);
                    int c = Integer.parseInt(line[i-1][2]);
                    //if (line[i][1] == null) {
            
                        //throw new NumberFormatException("null");}
                    int d = Integer.parseInt(line[i][1]);
                    
                    int f = Integer.parseInt(line[i][2]);
                    System.out.println(line[i][0]+';'+line[i-1][1]+""+Integer.toHexString(b)+';'+line[i-1][2]+""+Integer.toHexString(c)+';'+line[i-1][8]+';'+line[i-1][4]+';'+line[i][1]+""+Integer.toHexString(d)+';'+line[i][2]+""+Integer.toHexString(f)+';'+line[i][8]+';'+line[i][4]+';'+line[i][6]+';'+line[i][7]+';'+line[i][5]+';'+line[i][9]+';'+line[i][10]+';'+line[i][11]+';'+line[i][12]);
                    
                            String outputFile = "C:\\Documents and Settings\\Vieckov\\Pulpit\\Wynik\\X351710052113676_1338358375379.csv";
                 boolean alreadyExists = new File(outputFile).exists();
                 try {
CsvWriter nowy = new CsvWriter(new FileWriter(outputFile, true), ';');

nowy.write(line[i][0].substring(0, 19));
nowy.write(line[i-1][1]+" ("+Integer.toHexString(b)+")");
nowy.write(line[i-1][2]+" ("+Integer.toHexString(c)+")");
nowy.write(line[i-1][8]);
nowy.write(line[i-1][4]);
nowy.write(line[i][1]+" ("+Integer.toHexString(d)+")");
nowy.write(line[i][2]+" ("+Integer.toHexString(f)+")");
nowy.write(line[i][8]);
nowy.write(line[i][4]);
nowy.write(line[i][6]);
nowy.write(line[i][7]);
nowy.write(line[i][5]);
nowy.write(line[i][9]);
nowy.write(line[i][10]);
nowy.write(line[i][11]);
nowy.write(line[i][12]);
nowy.endRecord();
nowy.close();
} catch (NumberFormatException | IOException e)
{
}
}
}

model.addColumn(line);
model.addRow(line);
     table.setModel(model);
}
public static void main(String args[]) throws IOException {

    try {
     CSVTable frame = new CSVTable("input","X351710052113676_1338358375379.csv");
     frame.setVisible(true);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} catch (NumberFormatException q) {
       }
  }

}
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
07-09-2012, 07:18 PM
Post: #4
RE: Problem z szukaniem wartosci w kolumnie
Szczerze mówiąc nie za bardzo rozumiem Twój problem Smile Mógłbyś opisać trochę dokładniej?
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
07-10-2012, 07:05 PM
Post: #5
RE: Problem z szukaniem wartosci w kolumnie
Chciałbym wywalić tą resztę gui i zrobić tak żeby jak go odpalam w konsoli to jako argument podawać plik wejściowy i żeby mi gdzieś wrzucał ten wyjściowy. Kompletnie nie wiem jak to zrobić z tym csvreader
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
07-11-2012, 09:37 AM
Post: #6
RE: Problem z szukaniem wartosci w kolumnie
Anybody Huh ?
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
07-11-2012, 12:08 PM
Post: #7
RE: Problem z szukaniem wartosci w kolumnie
przypuszczam, że nikt nie rozumie Twojego problemu. bo chcesz wyrzucić CSVTable, a z tego co widać jest to klasa, która wykonuje wszystkie obliczenia i uruchamia działanie programu.. jeśli chcesz mieć to konsolowo to wtedy niepotrzebnie rozszerzasz JFrame. próbowałam uruchomić Twój program, ale wyskakują mi błędy.
czy ten program to w ogóle Ty pisałeś? bo mam wrażenie, że całkowicie nie orientujesz się o co chodzi.

'un mundo lleno de alegría' :)
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
07-11-2012, 02:49 PM
Post: #8
RE: Problem z szukaniem wartosci w kolumnie
Pisałem sam, w Netbeansie działa, konsoli wywala że nie wie co to jest csv reader
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
07-11-2012, 04:46 PM
Post: #9
RE: Problem z szukaniem wartosci w kolumnie
Dobra, trochę oczyściłem program chodź dalej w konsoli wysypuje mi błędy. Próbowałem już wszystkich importów. Pomóżcie.
Kod:
package com.csvreader;
import java.io.*;
import java.util.Scanner;
import java.util.StringTokenizer;

public final class CSVTable {
    
  public CSVTable(String title, String source) throws NumberFormatException {

    InputStream is;
    try {
        
            File f = new File(source);
            is = new FileInputStream(f);
        
        insertData(is);

    }catch(IOException ioe) {
    }
}

void insertData(InputStream is) throws FileNotFoundException, IOException, NumberFormatException {
   Scanner scan = new Scanner(is);
   String n = scan.toString();
   String[][] line = new String[n.length()][13];
   String line1;
        int row =0;
        int col =0;
   while (scan.hasNextLine()) {
        line1 = scan.nextLine();
        StringTokenizer st = new StringTokenizer(line1, ";", false);
        while (st.hasMoreTokens()) {
            line[row][col] = st.nextToken();
        col++;
        }
        col = 0;
        row++;
   }

           for (int i = 1; i < line.length; i++)
           {
               if(!line[i-1][2].equals(line[i][2])) {
                   int b = Integer.parseInt(line[i-1][1]);
                   int c = Integer.parseInt(line[i-1][2]);
                   int d = Integer.parseInt(line[i][1]);
                   int f = Integer.parseInt(line[i][2]);

                           String outputFile = "C:\\Documents and Settings\\Vieckov\\Pulpit\\Wynik\\wynik1.csv";
                boolean alreadyExists = new File(outputFile).exists();
                try {
CsvWriter nowy = new CsvWriter(new FileWriter(outputFile, true), ';');

nowy.write(line[i-1][0].substring(0, 19));
nowy.write(line[i-1][1]+" ("+Integer.toHexString(b)+")");
nowy.write(line[i-1][2]+" ("+Integer.toHexString(c)+")");
nowy.write(line[i-1][8]);
nowy.write(line[i-1][4]);
nowy.write(line[i][1]+" ("+Integer.toHexString(d)+")");
nowy.write(line[i][2]+" ("+Integer.toHexString(f)+")");
nowy.write(line[i][8]);
nowy.write(line[i][4]);
nowy.write(line[i][6]);
nowy.write(line[i][7]);
nowy.write(line[i][5]);
nowy.write(line[i][9]);
nowy.write(line[i][10]);
nowy.write(line[i][11]);
nowy.write(line[i][12]);
nowy.endRecord();
nowy.close();
} catch (NumberFormatException | IOException | NullPointerException e)
{
}
}
}

    String imie;
    Scanner odczyt = new Scanner(System.in);
    imie = odczyt.nextLine();

System.out.println("podaj plik "+is);
}
public static void main(String args[]) throws IOException, NullPointerException, NumberFormatException {

   try {
    CSVTable frame = new CSVTable("input","X004402141929004_1334824654152.csv");
} catch (NumberFormatException | NullPointerException q) {
}
}
}

W Netbeansie ładnie się kompiluje a w konsoli wysypuje następujące błędy:

CSVTable.java:51: error: cannot find symbol
CsvWriter nowy = new CsvWriter(new FileWriter(outputFile, true), ';');
^
symbol: class CsvWriter
location: class CSVTable
CSVTable.java:51: error: cannot find symbol
CsvWriter nowy = new CsvWriter(new FileWriter(outputFile, true), ';');
^
symbol: class CsvWriter
location: class CSVTable
2 errors
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
07-11-2012, 08:55 PM
Post: #10
RE: Problem z szukaniem wartosci w kolumnie
Nie bardzo wiem jak może Ci to działać, skoro nigdzie tutaj nie masz klasy CSVWriter, której obiekt próbujesz stworzyć w 51 linii.
Znajdź wszystkie posty użytkownika
Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości