Warum wird hier keine "ArrayIndexOutOfBounds"-Exception geworfen, wenn ich das Programm auf diese Weise starte:
java HolidaySked 365
Es wird doch im Konstruktor(Zeile 8-16) durch folgende Anweisung
ein BitSet für 365Einträge erzeugt und da der Index bei 0 beginnt hat doch der letzte Eintrag den Index 364.
Wieso funktioniert dann der obige Aufruf(java HolidaySked 365)?
java HolidaySked 365
Code:
import java.util.BitSet;
public class HolidaySked
{
BitSet sked;
public HolidaySked()
{
sked = new BitSet(365);
int[] holiday = {1, 20, 43, 48, 53, 116, 132, 147, 166, 167, 189, 245, 287, 316, 328, 360};
for (int i = 0; i < holiday.length; i++)
{
addHoliday(holiday[i]);
}
}
public void addHoliday(int dayToAdd)
{
sked.set(dayToAdd);
}
public boolean isHoliday(int dayToCheck)
{
boolean result = sked.get(dayToCheck);
return result;
}
public static void main(String[] args)
{
HolidaySked cal = new HolidaySked();
if (args.length > 0)
{
try
{
int whichDay = Integer.parseInt(args[0]);
if (cal.isHoliday(whichDay))
{
System.out.println("Day number " + whichDay + " is a holiday.");
}
else
{
System.out.println("Day number " + whichDay + " is not a holiday.");
}
}
catch (NumberFormatException e)
{
System.out.println("Error: " + e.getMessage());
}
}
}
}
Es wird doch im Konstruktor(Zeile 8-16) durch folgende Anweisung
Code:
sked = new BitSet(365);
Wieso funktioniert dann der obige Aufruf(java HolidaySked 365)?