Java创建一个方法来读取和随机播放现有数组的元素

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (67)

我一直在研究如何 从列表中随机选择一个项目 从.txt文件 中输出数组java 如何改组数组的内容

但大家和我一样困扰我吗?

我很确定我想这样使用

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

但我不确定是什么数组正在引用。

(String[] array)

我想有一个方法来读取一个数组(需要首先读取它,以便它知道要对什么进行洗牌?),将其洗牌,然后保存新的文本文件; 或读取数组并从列表中拉出一个随机数组。

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

如何告诉Java要读取哪个文件?我如何准确地告诉它如何解析它正在阅读的内容。我是否应该逐行读取并拉一条随机数组来告诉我?

public static void Encounter()

Scanner wildInput = new Scanner(new File("WildPkmn.txt"));

randomGenerator = new Random();

    }
}
See:
}
提问于
用户回答回答于

我不明白你为什么不简单地利用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));
用户回答回答于

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

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(); }

希望这是你继续学习逻辑的良好开端......

扫码关注云+社区

领取腾讯云代金券