Что я хочу сделать: читать строки с клавиатуры с помощью сканера, пока не будет использована конкретная строка для разрыва бесконечного цикла.сохраните их в arrayList, затем передайте их в массив, длина которого равна номеру итерации цикла
public class InputReader {
ArrayList<Integer> list = new ArrayList<>(0);
int arrayLength;
String readInput;
Scanner ir = new Scanner(System.in);
void readInput() {
for (int m=0; ;m++) {
readInput = ir.nextLine();
if ("q".equals(readInput)) {
//problem: arrayLength does not have the value of m outside the loop
arrayLength = m;
break;
}
System.out.println("arrayLength: "+arrayLength);
intInput = Integer.parseInt(readInput);
list.add(intInput);
}
}
int[] array = new int[arrayLength];
}
}
Внутри цикла arrayLength работает отлично, но вне цикла он не имеет значения, как я инициализировалэто без значения.Из-за этого
System.out.println("array.length: "+array.length);
всегда возвращает 0, а компилятор возвращает эту ошибку:
java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
, когда я пытаюсь сохранить целые числа внутри массива.1) Как я могу внести изменения в переменную, оставаясь за пределами цикла?
2) Странное наблюдение A:
int[] array = new int[list.size()];
возвращает ту же ошибку, несмотря на то, что list.size () имеет правозначение даже вне цикла (проверяется печатью).
И B: код работает, если я создаю свой массив внутри другого метода, а не внутри класса, а затем использую его в методе, но таким образом я не могуиспользуйте его в других моих классах, несмотря на использование наследования или параметров.
void giveOutput() {
int[] array = new int[list.size()];
public void giveOutput () {
System.out.println("list.size()"+list.size());
System.out.println("array.length:"+array.length);
for (int n=0; n<list.size(); n++) {
array[n] = list.get(n);
System.out.print("array["+n+"]:"+array[n]+" ");
}
}
}
это создает рабочий массив, но я не могу передать его моему Minsort, расширяет подкласс InputReader, где он сортируется, что приводит к вопросу номер
3) Как использовать переменные, инициализированные в методах других классов?Таким образом, моя программа тоже может работать.
(Я чертовски новичок, вчера начал серьезно работать с Java, мой первый успешный проект - алгоритм Minsort-алгоритма, который я написал с нуля, поэтому, пожалуйста, помилуйте. И заранее спасибо.)