【问题标题】:Text file not found android studio? [duplicate]找不到文本文件android studio? [复制]
【发布时间】:2018-01-10 23:33:08
【问题描述】:

我正在尝试为 Android 构建一个简单的应用程序无法弄清楚为什么我的应用程序不断崩溃我已经将其追溯到这行代码

<code>WG.setRandomWord(words.get(rand.nextInt(words.size())));</code>

我检查了我的 logcat,它显示我的 word 文件甚至没有被检测到com.sagproductions.gamertaggenerator W/System.err: java.io.FileNotFoundException: words.txt: open failed: ENOENT (No such file or directory),但我的文件 word 文件在文档结构中。

更多上下文是我的代码:

JAVA 单词生成器

package com.sagproductions.gamertaggenerator;


public class WordGenerator {
    private String mRandomWord;
    private int mRandomNum;

    public WordGenerator(String randomWord, int randomNum){
        mRandomNum=randomNum;
        mRandomWord=randomWord;
    }

    public int getRandomNum(){
        return mRandomNum;
    }

    public void setRandomNum(int randomNum){
        mRandomNum=randomNum;
    }

    public String getRandomWord(){
        return mRandomWord;
    }

    public void setRandomWord(String randomWord){
        mRandomWord=randomWord;
    }
}

Java MainActivity

package com.sagproductions.gamertaggenerator;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.lang.String;
import java.util.ArrayList;
import java.util.Random;

public class MainActivity extends AppCompatActivity {

    WordGenerator WG;
    private Button mSingleWordGenerator;
    private Button mTwoWordGenerator;
    private Button mThreeWordGenerator;
    private EditText editText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mSingleWordGenerator = (Button)findViewById(R.id.button);
        mSingleWordGenerator.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                generateWord();
                editText=(EditText)findViewById(R.id.editText);
               editText.setText(WG.getRandomWord(),TextView.BufferType.EDITABLE);
            }
        });

        mTwoWordGenerator = (Button)findViewById(R.id.button2);
        mTwoWordGenerator.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        mThreeWordGenerator = (Button)findViewById(R.id.button3);
        mThreeWordGenerator.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
    }

    public void generateWord(){
        final File file = new File("words.txt");
        ArrayList<String> words= new ArrayList<String>();
        Random rand=new Random();

        try(final Scanner scanner=new Scanner(file)){
            while(scanner.hasNextLine()){
                String line = scanner.nextLine();
                words.add(line);
            }
        }catch(FileNotFoundException e) {
            e.printStackTrace();
        }
        WG.setRandomWord(words.get(rand.nextInt(words.size())));
    }
}

【问题讨论】:

标签: java android


【解决方案1】:

WG 字段从未初始化,所以它是null。因此,当您调用该方法时,您可能会收到 NullPointerException。你应该在某个地方初始化它,也许在你声明它的时候(所以WordGenerator WG; 将被替换为WordGenerator WG = new WordGenerator(INITIAL_RANDOM_WORD, INITIAL_RANDOM_VALUE);,其中 INITIAL_RANDOM_WORD 和 INITIAL_RANDOM_VALUE 是你在其他地方定义的一些值)。

编辑: 似乎该行导致了问题,因为 words.size()0,这是因为 FileNotFoundException。读取该文件的正确方法取决于您将其放在何处。请参阅this question 的答案(以及它们链接到的页面),了解在 Android 中正确读取文本文件的不同方法。

【讨论】:

  • 我试过没有用。我再次检查了android监视器,它说异常是java.lang.IllegalArgumentException at Random.nextInt at generateword
猜你喜欢
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多