gpt4 book ai didi

java - 使链接列表中包含图像时出错

转载 作者:行者123 更新时间:2023-12-01 09:53:25 25 4
gpt4 key购买 nike

我正在开发一个内存游戏,我正在尝试使用从 LinkedList 获取值来放入选定的链接列表。这是我的代码:

import java.awt.GridLayout;
import java.awt.Image;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.ArrayList;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.swing.JFrame;


public class Runner{

public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

LinkedList<Image> icon = new LinkedList<Image>();


for (int i = 0; i < 20; i++) {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream((i + 1) + ".jpg");
try {
Image logo = ImageIO.read(input);
icon.push(logo);
}

catch (IOException e) {
e.printStackTrace();
}
}


Random rand = new Random();

LinkedList<Image> selected = new LinkedList<Image>();

for (int i = 0; i < 10; i++) {
int randomNum = rand.nextInt(20);


// Randomly pick one from the array of faces
Image face = icon.get(randomNum);
// Push 2 copies onto array
selected.push(face);
selected.push(face);
// Remove from faces array so we don't re-pick
icon.remove(randomNum);
}

Collections.shuffle(selected);





List<Card> tiles = new ArrayList<Card>();




int NUM_COLS = 5;
int NUM_ROWS = 4;

frame.setLayout(new GridLayout(NUM_ROWS, NUM_COLS));


for (int i = 0; i < NUM_COLS; i++) {
for (int j = 0; j < NUM_ROWS; j++) {
tiles.add(new Card(i * 39 + 10, j * 39 + 40, selected.pop()));
}
}

for (int i = 0; i < tiles.size(); i++) {
frame.add(tiles.get(i));
tiles.get(i).drawFaceDown();
}

for (int i = 0; i < tiles.size(); i++) {
frame.add(tiles.get(i));
tiles.get(i).drawFaceUp();
}

frame.pack();
frame.setVisible(true);



}
}

我的问题是,我尝试将图像放入图标链接列表中,但出现错误:

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at Runner.main(Runner.java:30)

最佳答案

这就是异常发生的地方。

Image face = icon.get(randomNum);

根据您得到的异常,icon 不包含任何元素。这意味着以下代码不会将元素添加到链接列表中。

try {
for (int i = 0; i < 20; i++) {
icon.push(ImageIO.read(new File(i+1 + ".jpg")));

}
}

catch (IOException e) {

}

你的catch语句在这里什么也不做。打印一些东西,看看添加是否失败。由于您尚未发布您的 card 类,因此我无法对其进行测试。如果icon添加元素失败,一定是文件读取失败造成的。

关于java - 使链接列表中包含图像时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37439964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com