У вас есть два объявленных поля экземпляра:
String idNumber;
и
char [] idMine = this.idNumber.toCharArray();
Инициализатор второго предполагает, что первый не null
, с которого он должен начинаться, следовательно, исключение. Инициализаторы экземпляров обрабатываются до входа в конструктор.
Вместо этого переместите эту инициализацию в конструктор:
IdDisplay(String ID)
{
this.idNumber = ID;
this.idMine = this.idNumber.toCharArray();
}
Также настоятельно рекомендуем объявить все ваши поля в одном месте (я предпочитаю их в начале урока, но то, куда вы их кладете, является вопросом стиля; то, что вы их собираете, является более существенным соображением по обслуживанию). (Предостережение с общим правилом: в случае полей, поддерживающих методы доступа, существует аргумент для объявления поля рядом с инструментом доступа.) И некоторые вертикальные пробелы между вещами могут быть полезны.
Полный обновленный IdDisplay
класс:
class IdDisplay implements Runnable
{
String idNumber;
char [] idMine;
IdDisplay(String ID)
{
this.idNumber = ID;
this.idMine = this.idNumber.toCharArray();
}
public void run()
{
for(int i = 0; i < idMine.length; i++)
{
System.out.print(idMine[i] + " ");
try
{
Thread.sleep(1000);
}
catch(InterruptedException in){}
}
}
}