gpt4 book ai didi

java - 在 Android 中使用 .txt 中的行填充 String[]

转载 作者:行者123 更新时间:2023-12-01 17:20:03 25 4
gpt4 key购买 nike

我正在尝试在 Android 中显示 temp.txt 文件中的随机行。

这是我生成文本的代码:

String quote[] ={"a","b","c"};

public void makeQuote(){
Random rand = new Random();
int num = rand.nextInt(quote.length);
textQuot.setText(quote[num]);
}

这个解决方案有效,并为我提供了字符串数组内部内容的随机输出。

现在我尝试使用 temp.txt 文件中的文本填充 String[],如下所示:

AssetManager manager = getAssets();
InputStream in = manager.open("temp.txt");
List<String> lines = IOUtils.readLines(in,"UTF-8");

String quote[] = lines.toArray(new String[0]);

public void makeQuote(){
Random rand = new Random();
int num = rand.nextInt(quote.length);
textQuot.setText(quote[num]);
}

但是应用程序在启动时就崩溃了。基本上我只想显示 temp.txt 文件中的随机行,并尝试通过用这些行填充字符串数组来实现此目的。

我也有这段代码,但我不知道如何传递到 makeQuote() 方法并从文件生成随机内容。

private List<String> getQuotes() {
List<String> quotes = new ArrayList<>();
BufferedReader buff = null;
try {
buff = new BufferedReader(new InputStreamReader(this.getAssets().open("temp.txt"), "UTF-8"));
String line;
while ((line = buff.readLine()) != null) {
quotes.add(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (buff != null) {
try {
buff.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return quotes;
}

最佳答案

文件位置

您可以将文件放在 assetsraw 目录中,因此它的路径应该如下所示:

/app/src/main/res/raw/temp.txt

之后您可以使用以下方式访问此文件:

R.raw.temp

代码修改

唯一需要更改的是行:

buff = new BufferedReader(new InputStreamReader(this.getAssets().open("temp.txt"),"UTF-8"));

您必须替换为:

buff = new BufferedReader(new InputStreamReader(getResources().openRawResource(R.raw.temp), "UTF-8"));

代替:

getAssets().open("temp.txt")

您使用:

getResources().openRawResource(R.raw.temp)

如何获取随机报价

1) 从文件中获取所有引用(来自res/raw/)

2)检查所有报价是否已正确读取(因此您的列表不为空)

3)画一个数字(在正确的范围内!)

4) 从列表中获取绘制位置上的元素

List<String> quotes = getQuotes();

if (!quotes.isEmpty()) {
int randomPosition = new Random().nextInt(quotes.size());
String quote = quotes.get(randomPosition);
}

随机

代码

new Random().nextInt(20);

返回一个范围内的随机值:

0 .. 19

列表(或数组)内的位置从0开始,因此我们可以使用quotes.size(),因为它返回范围内的值:

0 ... quotes.size()-1

关于java - 在 Android 中使用 .txt 中的行填充 String[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61313017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com