Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数组填充了最后一个插槽中的内容_Java_Arrays_For Loop - Fatal编程技术网

Java数组填充了最后一个插槽中的内容

Java数组填充了最后一个插槽中的内容,java,arrays,for-loop,Java,Arrays,For Loop,所以我用这个for循环来填充一个小数组,从一个大数组中随机抽取5个元素,但我有一个问题,当我用这个新对象填充原始数组时,它会用刚刚放入的对象填充它上面的每个插槽。所以我的小数组中的所有内容都是一样的 `public Prize[] Showcase(){ Scanner fileIn=null; try{ fileIn = new Scanner(new File("prizeList.txt")); fo

所以我用这个for循环来填充一个小数组,从一个大数组中随机抽取5个元素,但我有一个问题,当我用这个新对象填充原始数组时,它会用刚刚放入的对象填充它上面的每个插槽。所以我的小数组中的所有内容都是一样的

`public Prize[] Showcase(){

        Scanner fileIn=null;
        try{
            fileIn = new Scanner(new File("prizeList.txt"));    
            for(int i=0;fileIn.hasNextLine();i++){
                String delim ="\t";
                String[] splitStrings=fileIn.nextLine().split(delim);
                if(splitStrings.length==2){
                    int thing = Integer.parseInt(splitStrings[1]);
                    prizeList[i]=new Prize(splitStrings[0],thing);


                }

            }
        }
        catch(Exception e){
            System.out.println(e);              
        }
        return prizeList;

    }
    public static void Prizes(Prize[] prizeList){
        for(int i=0;i<5;i++){
        Random bkRandy=new Random();
        int randy = bkRandy.nextInt(50);
        prizes[i]=prizeList[i];
        System.out.println(prizes[i].getName());
        }
    }`

如果我正确理解了你的问题,你是在问如何从另一个列表中获取随机项列表。我假设您特别不想要重复项(即短列表不应包含长列表中的多个项目)。如果这是正确的,那么我建议如下:

List<Prize> getRandomPrizes(List<Prize> prizes, int prizeCount) {
    Collections.shuffle(prizes);
    return prizes.stream().limit(prizeCount).collect(Collectors.toList());
}
List GetRandomPrices(列出奖品,整数奖品计数){
收藏。洗牌(奖品);
返回奖品.stream().limit(prizeCount).collect(Collectors.toList());
}

它可以自动处理原始列表中的奖品少于
prizeCount
的情况。

当您制作某个
静态的
时,只有一个。因此,您的实例是共享相同数据的唯一引用。你需要像这样的东西

public class Prize {
    private String name;  // <-- not static.
    private int price;  // <-- not static.
    public Prize(String name, int price){
        this.name = name;
        this.price = price;
    }
    public int getPrice() {  // <-- not static.
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public String getName() { // <-- not static.
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }   
}
公共班级奖{

private String name;//不知道您的问题,但对于(int i=0;fileIn.hasNextLine();i++)而言,这看起来不太正确…
{
如何确保
i
的增量不会超过
prizeList
数组的大小?另外-每次通过循环时,您都在创建一个新的
随机
对象-您希望在循环外创建一个对象。这可能与您的问题有关…您让我到了那里。我只知道我要创建的文件的行号扫描。谢谢你,我会改变它。显然我有点新,所以我通常会胡乱处理,直到某些东西工作起来,然后在出现问题时进行修复。谢谢伙计们!我在需要提交之前就已经解决了。我很讨厌静态调用东西,但我想我终于解决了。这是一个很好的教训。@gengkev。还有当你消除了不可能,剩下的,无论多么不可能,都是事实…我不能在这个程序中使用数组列表。否则它会让事情变得非常简单。你现在明白了吗?我现在明白了。它基本上只是使它总体上是一样的,所以当我改变它时,它必须改变这是一个类级别的全局函数;每个类一个(不是每个实例一个)。当你改变“it”时,它是唯一的一个。
public class Prize {
    private String name;  // <-- not static.
    private int price;  // <-- not static.
    public Prize(String name, int price){
        this.name = name;
        this.price = price;
    }
    public int getPrice() {  // <-- not static.
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public String getName() { // <-- not static.
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }   
}