android读取多行文件,Android读取行文本文件

我有一个文本文件,其中包含土耳其语中的所有五个字母的单词。 从那里,我想画一个随机的词。 所有的单词都是AssetManager丝网印刷,但不知怎的,我没有掉一个单词。 我怎么能用循环?

如果你能提供帮助,我会很高兴的。

资源:

public class MainActivity extends Activity {

Button degistir;

TextView kelime;

EditText ykelime;

Random rnd =new Random();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

degistir=(Button)findViewById(R.id.btngiris);

kelime=(TextView)findViewById(R.id.kelime);

ykelime=(EditText)findViewById(R.id.giris);

AssetManager assetManager = getAssets();

// To load text file

InputStream input;

try {

input = assetManager.open("5HarfliKelimeler.txt");

int size = input.available();

byte[] buffer = new byte[size];

input.read(buffer);

input.close();

// byte buffer into a string

String text = new String(buffer);

int sayi=rnd.nextInt(text.length());

kelime.setText(text);

}

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

degistir.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

kelime.setText(ykelime.getText());

ykelime.setText(null);

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

你的文件存在吗? 被抛出的是什么? 你可以记录一个,但是你应该读取输入流直到完成。

我有文件,你可以检查所有的单词大约5000字,但我想从屏幕上做一个随机的单词打印。

逐行读取文件并将所有单词列入清单。(如何逐行阅读|检查此处)

然后,为每个按钮单击指定随机索引。 最后,使用生成的索引显示列表中的单词。 (索引范围必须从0到列表大小)

- 我没有编辑就编辑了你的代码。 -

public class MainActivity extends Activity {

Button degistir;

TextView kelime;

EditText ykelime;

List wordList=null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

degistir=(Button)findViewById(R.id.btngiris);

kelime=(TextView)findViewById(R.id.kelime);

ykelime=(EditText)findViewById(R.id.giris);

AssetManager assetManager = getAssets();

// To load text file

InputStream input;

try {

input = assetManager.open("5HarfliKelimeler.txt");

wordList= new ArrayList();

BufferedReader reader = new BufferedReader(new InputStreamReader(input , charset.forName("UTF-8")));

String line ="";

while ((line = reader.readLine()) != null) {

wordList.add(line);

}

}

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

degistir.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

if(wordList!=null){

Random rnd =new Random();

Integer generatedIndex = rnd.nextInt(wordList.size());

String selectedWord=wordList.get(generatedIndex);

kelime.setText(selectedWord);

// ykelime.setText(null);

}

else{

//DISPLAY MSG ETC.

}

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

谢谢:)随机访问之前,我点击我刚刚做的按钮 - 有点变化。你很棒 :)

别客气 !

也许吧... :)

绝对是:D

如果你的问题解决了,请批准我的答案;)

好吧,我在EditText中输入了单词,我该怎么检查是否有ArrayList。

stackoverflow.com/questions/587404/您需要使用集合搜索。查找匹配项并为每个字符更改事件显示它们。

或者简单的循环。性能不佳但易于实现。

首先,如果您的文件内容不会被更改,那么您必须计算最大行数并将其写为常量:

private String getRandomLine() {

final int FILE_MAX_LINE_INDEX = 5000;//if your file has 5000 lines, and it's content never be changed

Random rnd = new Random();

final int lineIndex = rnd.nextInt(FILE_MAX_LINE_INDEX);

try {

LineNumberReader lnr = new LineNumberReader(new InputStreamReader(getAssets().open("5HarfliKelimeler.txt")));

String s;

while ((s = lnr.readLine()) != null) {

if (lnr.getLineNumber() == lineIndex) {

lnr.close();

return s;

}

}

} catch (IOException e) {

e.printStackTrace();

}

return"";

}

或者,如果您的内容可能会被更改,并且您不知道文件中将包含多少行:

private String getRandomLine() {

List fiveLetterWords = new ArrayList(5000);

try {

LineNumberReader lnr = new LineNumberReader(new InputStreamReader(getAssets().open("5HarfliKelimeler.txt")));

String s;

while ((s = lnr.readLine()) != null) {

fiveLetterWords.add(s);

}

lnr.close();

} catch (IOException e) {

e.printStackTrace();

}

Random rnd = new Random();

return fiveLetterWords.get(rnd.nextInt(fiveLetterWords.size()));

}

为什么要使用静态最大线索引?将每个单词添加到列表中,然后从中选择一个随机索引。 (从0到listSize)@Autocrab

它会更快,如果你知道文件的内容不会改变,所以你知道,该文件包含相同的行数。因此,您可以将此计数指定为常量,并从此值中生成随机int。您不必阅读所有行,您将只读取随机索引之前的行。

您可以轻松读取5 k 10k或50k字的milisecs。只有milisecs ......如果它的5143线怎么办?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值