Java创建一个方法来读取和搅乱现有数组的元素



我一直在仔细研究这些链接:从列表中随机选择一个项目从.txt文件java打印数组如何打乱阵列的内容

但他们既帮助我又让我困惑?

我很确定我想使用

public static void shuffle `(String[] array)` // mix-up the array

但我不确定的线路是什么

(String[] array)

正在引用。

我想有一个方法来读取数组(需要先读取它,这样它就知道该混洗什么了??(,混洗它,然后保存新的文本文件;或者读取一个数组并从列表中提取一个随机数组。

我对如何将ArrayList与字符串一起使用感到困惑。

如何告诉Java要读取什么文件?我该如何准确地告诉它如何解析它正在阅读的内容。我应该让它一行一行地读,然后随机拉一行给我看吗?

public static void Encounter()
Scanner wildInput = new Scanner(new File("WildPkmn.txt"));
randomGenerator = new Random();
}
}
See:
}

您首先需要读取您的文件,可以按如下方式完成:

List<String> result;
try (Stream<String> stream = Files.lines(Paths.get("WildPkmn.txt"))) {
result = stream.collect(toList());
} catch (IOException e) { e.printStackTrace(); }

然后我建议将您的方法签名更改为:

public static void shuffle (List<String> source){
// look into Collections.suffle
// etc..
}

或者你可能想完全去掉这个方法,因为Collections.suffle是一行代码。。。

然而,假设您严格想要一个数组,并在此基础上执行进一步的逻辑,那么您可以将上面的第一个示例片段更改为:

String[] result;
try (Stream<String> stream = Files.lines(Paths.get("WildPkmn.txt"))) {
result = stream.toArray(String[]::new);
} catch (IOException e) { e.printStackTrace(); }

希望这是一个好的开始,让你继续你的逻辑。。。

我不明白您为什么不简单地利用List和Collection的shuffle方法。玩以下游戏。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class Test {
public static final String file = "WildPkmn.txt";
public static void main(String[] args) {
List<String> list = null;
try {
list = readFromFile(file);
} catch (IOException | NullPointerException e) {
e.printStackTrace();
}
System.out.println(list);
Collections.shuffle(list);
System.out.println(list);
}
public static List<String> readFromFile(String fileName) throws IOException {
Stream<String> stream = Files.lines(Paths.get(fileName));
return stream.collect(Collectors.toList());
}
}

如果字符串数组已经存在,

String[] tokens = ...;
Collections.shuffle(Arrays.asList(tokens));

相关内容

  • 没有找到相关文章

最新更新