Zapis parametrów .jar-a do tablicy

0

Witam

Otóż mam jedno pytanie. Czy jest możliwość zapisu wprowadzanych parametrów już zbudowanego .jar do tablicy.
Chodzi mi mianowicie o ten przykład:

 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 

Wprowadzane liczby jako parametry chciałbym zapisać do tej tablicy int[] attributes = {0, 1}. Prosiłbym o jakąś pomoc, wskazówki.

0

Co nazywasz

wprowadzonymi parametrami już zbudowanego jara
?

0

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]); 
}
    
}
1

A tak nie można?

if (args.length<2) //tu miałeś złą nierówność
{
     System.out.println("Program oczekuje dwóch parametrow!");
     System.exit(0);                    
}
...
int[] attributes;
if(args.length == 2)
{
    attributes = new int[2];
    attributes[0] = 0;
    attributes[1] = 1;
}
else
{
    attributes = new int[args.length - 2];
    for(int i=2;i<args.length;i++)
    {
        attributes[i-2] = Integer.parseInt(args[i]);
    }
}
0

Działa :) dziękuje za pomoc, temat do zamknięcia

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