ok już wyjaśniam. Zbudowanego mam plik *.jar aplikacji. Za zadanie mam konsolowo wprowadzić parametrów do niej. Jednym jest plik wejściowy, drugim plik wyjściowy. Chciałbym stworzyć trzeci parametr (w sumie to moze byc ich grupa mała), które będą wskazywały, jakie kolumny mają zostać skasowane z tablicy pliku *.arff. Numery kolumn zapisywane są w tablicy
int[] attributes = {0, 1};
. Mam ustawione na sztywno dwie wartości, ale staram się zrobić tak, aby wprowadzane liczby z parametrow zostaly zapisywane do tej tablicy. Jest taka możliwość?
KOD PROGRAMU:
package terminalowy;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import weka.core.Instances;
import weka.core.converters.ArffLoader;
import weka.core.converters.ArffSaver;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.Remove;
public class Terminalowy {
//Odczytanie tablicy danych z dysku w formacie ARFF
public static Instances loadData(String fileName)
throws IOException
{
ArffLoader loader = new ArffLoader(); //Utworzenie obiektu czytajacego dane z formatu ARFF
loader.setFile(new File(fileName)); //Ustawienie pliku do odczytania
return loader.getDataSet(); //Odczytanie danych z pliku
}
//Zapis zbioru danych do formatu ARFF
public static void saveData(Instances data,String fileName)
throws IOException
{
ArffSaver saver = new ArffSaver(); //Utworzenie obiektu zapisujacego dane
saver.setFile(new File(fileName)); //Ustawienie nazwy pliku do zapisu
saver.setInstances(data);
saver.writeBatch(); //Zapis do pliku
}
public static void main(String[] args) throws Exception
{
try
{
System.out.println("Liczba parametrow="+args.length);
System.out.print("Parametry:");
for (int i=0;i<args.length; i++)
{
System.out.print(args[i]+" ");
}
System.out.println();
if (args.length<1)
{
System.out.println("Program oczekuje dwóch parametrow!");
System.exit(0);
}
Instances data = loadData("./src/data/"+args[0]);
Remove remove = new Remove();
int[] attributes = {0, 1}; //Lista numerow atrybutow do usuniecia (numeracja od 0)
remove.setAttributeIndicesArray(attributes); //Ustawienie listy do usuniecia
remove.setInputFormat(data);
Instances newData = Filter.useFilter(data, remove); // Zastosowanie filtra
saveData(newData, "./src/data/"+args[1]); //Zapis tablicy po filtracji
}
catch (Exception e)
{
System.out.println("Blad:");
e.printStackTrace();
}
BufferedReader strumienWe = new BufferedReader(new FileReader( "./src/data/"+args[1]));
String pole = new String();
String wiersz = strumienWe.readLine();
while (wiersz != null) {
pole = pole + wiersz + "\n"; //dodanie znaku konca wiersza: \n
wiersz = strumienWe.readLine();
System.out.println(wiersz);
}
System.out.println("===================================");
System.out.println("WYKONANKO POPRAWNIE");
System.out.println("ZAPISANO PLIK W: /src/data/"+args[1]);
}
}