我是Android Development和Java的新手。请耐心等待。
所以,我正在创建一个从网页列表中打开随机网页的应用程序 代码读取包含所有链接的assets文件夹中的文本文件,并生成链接列表,然后随机选择一个。
所以问题是我已经输入了日志消息,检查程序是否正在读取并填充数组,直到文本的最后一行。
日志消息将列表大小显示为1301.而我的文本文件包含2601个链接。 我似乎无法理解我哪里出错了。
这是java代码片段,
int sd=0;
List<String> links=new ArrayList<>();
try {
AssetManager assetManager = getAssets();
InputStream assetIn = assetManager.open("android");
BufferedReader r = new BufferedReader(new InputStreamReader(assetIn));
while (r.readLine() != null) {
links.add(r.readLine());
sd++;
}
} catch (IOException e) {
e.printStackTrace();
}
Random r=new Random();
//String len= Integer.toString(links.size());
String len= Integer.toString(sd);
Log.i("total loop",len);
String randomLink=links.get(r.nextInt(links.size()));
Log.i("link select :",randomLink);
webView.loadUrl(randomLink);
答案 0 :(得分:2)
您正在调用.statement{
position:relative;
top:50%;
transform: translateY(-50%);
}
#canvas{
width:100%; height:100%;
}
两次,因此在每次迭代时读取2行而不是1行:
readLine()
您可能想要使用:
while (r.readLine() != null) { // reads a line
links.add(r.readLine()); // reads another line
sd++; // increments by 1 every *2* lines read
}
答案 1 :(得分:2)
你两次读取循环,在这里:
1)while (r.readLine() != null) {
2)links.add(r.readLine());
所以它应该是:
String line = "";
while ((line = r.readLine()) != null) {
links.add(line);
sd++;
}