private String[] words;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDecorView = getWindow().getDecorView();
loadWords();
TextView tv = (TextView) findViewById(R.id.word);
tv.setText(words[0]);
}
public void loadWords()
{
try {
InputStream file = new FileInputStream("words.txt");
InputStreamReader sr = new InputStreamReader(file);
BufferedReader br = new BufferedReader(sr);
int n = 0;
while(br.readLine() != null)
{
words[n] = br.readLine();
n++;
}
} catch (IOException e) {
e.printStackTrace();
}
}
Хорошо, так что я только пытаюсь напечатать первый элемент в массиве, но приложение падает во время запуска и дает мне ошибку «Попытка чтения из пустого массива»Попытка загрузить текстовый файл в массив по строкам, но массив остается нулевым, что я делаю неправильно? (Java, Android студия)
EDIT - Решение
-I не инициализировать массив (я знал, что 100 строк)
-Мой входной поток был неправильно (мой файл не может быть найден)
-I пытался обновить TextView с. (который не был выбран в то время)
String[] words = new String[100];
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDecorView = getWindow().getDecorView();
loadWords();
}
public void changeView(View view) {
setContentView(R.layout.game_view);
TextView tv = (TextView) findViewById(R.id.word);
tv.setText(words[0]);
}
public void loadWords()
{
try {
BufferedReader br = new BufferedReader(new InputStreamReader(getAssets().open("words.txt")));
for(int i = 0;i<words.length;i++)
{
words[i] = br.readLine();
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
проверить 'word.lenght> 0' перед доступом к значению из массива. – Rustam
использовать динамический список 'ArrayList' вместо' String [] ' – Rustam
@Rustam: возможно, неплохая идея; так как его код выглядит 'words' равно null. Однако при вызове .length на null не будет ничего хорошего. И ваш второй комментарий тоже не слишком полезен - просто замена типа не поможет вообще; поскольку другое объявление без инициализации все равно приведет к сбою его программы с помощью исключения NullPointerException. – GhostCat