我正在编写一个程序,用于读取.txt的链接并解除数组中的链接,因此稍后可以随机访问这些链接。
这就是我所做的(而且它不起作用:D):
import java.io.*;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Scan{
public static void main(String[] args) throws FileNotFoundException{
String test = "";
int i = 0;
int temp = 0;
Scanner link = new Scanner(new File("links.txt"));
while(link.hasNextLine()){
test = link.nextLine();
temp++;
}
link.close();
String[] links = new String[temp];
Scanner urls = new Scanner(new File("links.txt"));
for (i = 0; i < temp; i++)
{
test = urls.nextLine();
links[i] = test;
System.out.println("Sorted: " + links[i]);
}
urls.close();
System.out.println("Size of LINKS: " + temp);
// - - - - - - - - - - - - - - - - - - - - - //
// Start of the unsorting algorithm //
// (It's just not working, need a new one) //
// - - - - - - - - - - - - - - - - - - - - - //
String[] copy = new String [temp];
int[] used = new int [temp];
for(i = 0; i < temp; i++)
{
for (int k = 0; k < temp; k++)
{
int j = (int) (Math.random() * temp);
//System.out.println(j);
if (j == used[k])
{
k--;
}
else
{
used[k] = j;
copy[j] = links[i];
}
}
System.out.println(links[i]);
}
}
}
编辑:我当前的未分类算法显示其起始顺序上的所有链接。
答案 0 :(得分:0)
问题出在第二个循环中,您正在选择随机索引$(document).ready(function(){
var refreshDivContent = function(divid) {
$.ajax({
url: "path",
cache: false,
success: function(data) {
$('#' + divid).html(data);
setTimeout(function() {
refreshDivContent(divid);
}, 5000);
}
});
};
refreshDivContent('homescore'); // Use it
});
,但是您应该检查j
何时应该检查used[k] == j
?
所以一个解决方案是创建一个方法Does the array used contain j
来检查它是否已经存在。或者另一个简单的解决方案:
boolean contains(int[] arr, int val)
如果您想要ArrayList<String> links = //read from file
ArrayList<String> unsorted = new ArrayList<String>();
while(links.size() != 0) {
unsorted.add( links.remove( (int)(Math.random()*links.size()) ) );
}
unsorted.toArray()
答案 1 :(得分:0)
你为什么要重新发明轮子?
List<String> list = Arrays.asList(links);
Collections.shuffle(list);
String[] copy = list.toArray(new String[temp]);
如果您使用List
而不是数组,那么您的代码会更简单。