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
Kopiuj
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:
Kopiuj
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 {
public static Instances loadData(String fileName)
throws IOException
{
ArffLoader loader = new ArffLoader();
loader.setFile(new File(fileName));
return loader.getDataSet();
}
public static void saveData(Instances data,String fileName)
throws IOException
{
ArffSaver saver = new ArffSaver();
saver.setFile(new File(fileName));
saver.setInstances(data);
saver.writeBatch();
}
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};
remove.setAttributeIndicesArray(attributes);
remove.setInputFormat(data);
Instances newData = Filter.useFilter(data, remove);
saveData(newData, "./src/data/"+args[1]);
}
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";
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]);
}
}