Для вашей фактической ошибки компиляции, c
может не инициализироваться, если цикл не выполняется.Даже если вы знаете, что это произойдет (поскольку cmd
равно "yes"
, компилятор не идет так далеко).
Вы найдете ответы, которые сначала инициализируют значение, например, ответ Ненг Лю , но, основываясь на вашей логике, вы можете использовать цикл do..while
, поскольку ваша логика показывает, что вы хотитепрочитайте хотя бы один раз Scanner
.
do{
System.out.println("Enter value for c :");
c=new int[] {in.nextInt()};
System.out.println("Continue(yes/no)? :");
cmd=in.next();
}while("yes".equals(cmd)); //.equals is needed to compare `String` correctly
Условие в do..while
проверяется после выполнения оператора блока (сравните с while
, который проверял условие раньше).Таким образом, оператор будет выполнен по крайней мере один раз, так что вы уверены, что c
будет инициализирован таким образом.И компилятор это тоже знает.
Поскольку в названии упоминается, что вам нужен массив динамического размера, см. Ответ HamishD , чтобы использовать Collection
, который будет расти по мере необходимости.А для более полного сообщения о List
см. Размеры динамического массива Java?