如何在Java中创建图像数组?

4

我正在尝试初始化一副扑克牌,并展示它们(我有.gif格式的图片)。唯一的问题是初始化整副扑克牌。到目前为止,我已经尝试创建四个数组(每一个都代表一种花色)如下:

import java.applet.*;
import java.awt.*;

public class deckOfCards extends Applet
{
    public void init()
    {
        image clubs = new image[13];
        image hearts = new image[13];
        image spades = new image[13];
        image diamonds = new image[13];
    }
}

然后对于每个类似的操作,需要像这样执行:

for( int i = 0; i <= 13; i++ )
{
    clubs[i] = getImage( getDocumentBase(), c(i).gif )
}

(每个花色的牌文件保存在文件名c1.gif,c2.gif......c13.gif中)
我遇到了一个错误,提示找不到符号“image”,但是java.awt.image中有一个类来创建图像对象和图像方法,为什么会出现这种情况?请帮我解决一下。

7
它的“Image”,I要大写。 - Perception
1
你的 for 循环不能达到 13,应该小于它。 - Bhesh Gurung
1
我强烈建议您将程序更加面向对象化,通过创建一个具有自己图像和属性的 Card 对象,否则我闻到了一阵意大利面代码的味道。 - MrLore
1
我强烈建议你找一本Java入门书籍,学习语言的基础知识:大小写敏感性、正确声明和使用数组的方法、命名规范、学会阅读javadoc等。 - Adrian Shum
2个回答

8

image 不是 AWT 包中的有效类,需要将首字母大写。

您有一些语法问题:

  • Image 中的大写字母 I
  • 缺少左侧数组括号
  • 循环时不要超出您的 Image 数组的索引
  • getImage 调用需要引号

Java 命名规范 表明类以大写字母开头,因此您的类也应该如此:

public class DeckOfCards extends Applet {

    public void init() {

       Image[] clubs = new Image[13];
       for (int i = 0; i < clubs.length; i++ ) {
            clubs[i] = getImage( getDocumentBase(), "c" + (i + 1) + ".gif");
        }
        ...
    }
}

另外,Applet 是一件博物馆文物,并已被轻量级的 javax.swing.JApplet 取代。


1

这就是使用ArrayList容器的方法。实际上,ArrayList是一个数组,但更加灵活。

ArrayList<Image> arrayName = new ArrayList<Image>();
Image imageName = getImage(getCodeBase(),"direction.jpg");
arrayName.add(imageName);

1
谢谢您的建议,但它并不能解决原帖的紧急问题。 - MadProgrammer
是的,它并不需要。但也许他会决定在那个问题中需要更灵活的数据结构,有很多方法,我喜欢了解和被告知其他选择。 - Ariel Grabijas
我同意,为人们提供方向是很好的。然而,在我看来,我建议您尝试解决问题并提供方向或将其作为评论留下 - 问题在于,有些人可能会选择将答案投票否决,因为他们认为它没有帮助 - 只是说一下 ;) - MadProgrammer
“但也许他会决定需要更灵活的数据结构”是指为一副52张牌的扑克牌吗? - Andrew Thompson
好的MadProgrammer,我明白你的观点,我会考虑的,谢谢 :) Andrew - 我们不知道他打算用那张牌来做什么,对吧? :) - Ariel Grabijas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接