0

Я получаю исключение IllegalStateException, и я уверен, что это из FileReader. Я называю этот метод нажатием кнопки:IllegalStateException в AndroidStudio от FileReader

public void onStartButtonTouch(View view) { 

    ArrayList<String> tele = new ArrayList(); 

    BufferedReader reader; 
    String strLine; 



    try { 
     FileReader wordie = new FileReader("words.txt"); 
     reader = new BufferedReader(wordie); 

     while((strLine = reader.readLine()) != null) { 
      if (strLine.length() == 4) { 
       tele.add(strLine); 
      } 
     } 
    } catch (FileNotFoundException e) { 
     System.err.println("Unable to find the file: words.txt"); 
    } catch (IOException e) { 
     System.err.println("Unable to read the file: words.txt"); 
    } 

    Random random = new Random(); 
    int index = random.nextInt(tele.size()); 
    word = tele.get(index); 

    this.setContentView(R.layout.fragment_main_activity_play); 
//when start button click, open activity play. 
} 

Вот выход LogCat:

Process: chinchillacongress.hangman, PID: 331 
java.lang.IllegalStateException: Could not execute method of the activity 
     at android.view.View$1.onClick(View.java:4083) 
     at android.view.View.performClick(View.java:4832) 
     at android.view.View$PerformClick.run(View.java:19839) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:211) 
     at android.app.ActivityThread.main(ActivityThread.java:5317) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811) 
Caused by: java.lang.reflect.InvocationTargetException 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at android.view.View$1.onClick(View.java:4078) 
            at android.view.View.performClick(View.java:4832) 
            at android.view.View$PerformClick.run(View.java:19839) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:211) 
            at android.app.ActivityThread.main(ActivityThread.java:5317) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811) 
Caused by: java.lang.IllegalArgumentException: n <= 0: 0 
     at java.util.Random.nextInt(Random.java:182) 
     at chinchillacongress.hangman.MainActivity.onStartButtonTouch(MainActivity.java:96) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at android.view.View$1.onClick(View.java:4078) 
            at android.view.View.performClick(View.java:4832) 
            at android.view.View$PerformClick.run(View.java:19839) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:211) 
            at android.app.ActivityThread.main(ActivityThread.java:5317) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811) 

Как я могу это исправить? Я уверен, что это проблема с FileReader, потому что я устанавливаю точки останова вокруг него, и он падает с этой строки.

+0

Вы осознали, что до этого исключения происходит другое? 'Caused by: java.lang.IllegalArgumentException: n <= 0: 0' Мне кажется, что проблема заключается в параметре' nextInt' 'Random' method – AlvaroSantisteban

ответ

0

Неверная вещь заключается в том, что вы пытаетесь получить что-то от своего ArrayListtele, даже если чтение не получается. Следующие строки должны быть также внутри try, потому что точка считывания из ArrayList, которая не была успешно заполнена?

Random random = new Random(); 
int index = random.nextInt(tele.size()); 
word = tele.get(index); 
Смежные вопросы