2014-11-17 2 views
-4

Я пытаюсь заполнить массив строк java переменной. переменная содержит значения, которые я читаю из текстового файла. каждый раз, когда новое значение сохраняется в массиве, текущее значение заменяется новым значением.Заполнение массива java переменной

приведенный ниже код является тем, что я пробовал до сих пор.

int n = 0; 

String var1 = value; 

String array[] = {var1}; 

String [] array = new String[n]; 

    for (int i =0; i < n; i++) { 

    array[n++] = value; 

    } 
+0

Где находится "значение"? Я предполагаю, что код, который вы нам показали, находится внутри цикла, где вы читаете разные значения в 'value'? Кроме того, ваш пример кода никогда не будет скомпилирован, так как вы дважды определяете «массив». Пожалуйста, покажите нам свой фактический код. –

ответ

2

Java имеет только массивы фиксированного размера; динамично растущие «массивы» реализуются с List:

List<String> array = new ArrayList<>(); 
for (int i = 0; i < 42; ++i) { 
    String s = "" + i; 
    array.add(s); 
} 

for (String t : array) { 
    System.out.println(t); 
} 

String seven = array.get(7); 
int n = array.size(); 
if (array.isEmpty()) { ... } 

// In Java 8: 
array.stream().sorted().forEach(System.out::println); 

Использование (фиксированного размера) массивов будет громоздким:

String[] array = new String[]; 
String[] otherVar = array; 
for (int i = 0; i < 42; ++i) { 
    String s = "" + i; 
    array = Arrays.copyOf(array, i + 1); 
    array[i] = s; 
} 

Здесь на каждом шагу новый массив создается, содержание старый массив скопирован. Также обратите внимание, что otherVar сохраняет исходный пустой массив.

Отметьте, что String[] a - это то же самое, что и String a[]. Последнее относится только к совместимости с C/C++ и менее читаемо.

0

Это добавит строку бесконечно. При чтении всех данных из файла вам необходимо установить isFileNotEnded = false

boolean isFileNotEnded = true; 
    List<String> array = new ArrayList<>; 
    while (isFileNotEnded) { 
     array.add("hello"); 
     //stop here the infinite loop 
    } 
+0

Я не знаю, сколько данных в текстовом файле – percy3872

+0

, тогда вы не можете использовать массивы, но вы должны использовать ArrayList – Accollativo

Смежные вопросы