java.lang.NegativeArraySizeException

0

Jak w temacie. Nie wiem co źle zrobiłem. Proszę o pomoc.

import java.util.zip.*;
import java.io.*;

public class Kompresja
 {
  public static void main(String args[])
{
  int ilosc=args.length;
  String tab[]=new String[ilosc-1];
  String nazwa=args[0];
  byte bajty[]=new byte[1024]; 
  
   for(int i=1;i<ilosc;i++)
  {
  tab[i-1]=args[i];
  }
  
  try{
  ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(nazwa));
  for(int k=0;k<tab.length;k++)
  {
  FileInputStream fis=new FileInputStream(tab[k]);
  zos.putNextEntry(new ZipEntry(tab[k]));
  int len;
  while((len=fis.read(bajty))>0)
  {
  zos.write(bajty,0,len);
  }
  zos.closeEntry();
  fis.close();
  }
  zos.close();
  
  }catch(Exception ek){}
  
}
 }

0

Jeżeli nie przekazujesz argumentów do programu, to długość tablicy args wynosi zero.

  int ilosc=args.length; // ilosc=0
  String tab[]=new String[ilosc-1]; //tworzysz tablicę o rozmiarze -1
0

A co mam zrobić, żeby to naprawić?

0

Ubezpieczyć się na taką sytuację. Czyli przed stworzeniem tablicy sprawdzić, czy do programu zostały przekazane jakiekolwiek argumenty.

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