Java-使用数组中的整数链接.png图像

时间:2017-10-16 12:33:11

标签: java arrays

我有一个代码,首先将一个包含5个元素的数组(1,2,3,4,5)进行洗牌。我的第二个for循环将userInput与Array中的元素进行比较,如果匹配(用户输入3并且Array中有3个),则程序将用户输入切换为索引0,将索引0中的任何内容切换为用户索引的上一个位置。

我有五个.png卡片图片(Ace,Two,Three,Four,Five)。我希望我的程序显示这些图像而不是整数数组。此外,我希望图像在用户单击时切换位置。如何更改for循环以使卡的图像更改位置而不仅仅是数组中的数字?

int place = 0
int[] deck = {1,2,3,4,5};
for(int i=0; i<5;i++) {
    int j = 1+Math.random()*5
    place = deck[i];
    deck[i]= deck[j];
    deck[j]=place;
}

for(int i=0; i<5;i++) {
    if(userInput == deck[i]) {
        place = deck[i];
        deck[i] = deck[0];
        deck[0] = place
        return deck;
    }
}
System.out.println(Arrays.toString(deck));

1 个答案:

答案 0 :(得分:1)

没有足够的细节可以真正回答,例如这是一个CLI应用程序(命令行应用程序),基于Web的应用程序,Swing / AWT应用程序?如果它是基于网络的,你使用像Spring或其他东西吗?如果没有这些细节,很难说你要用什么来显示图像,但我会尝试以尽可能通用的方式提供帮助......

CLI App - 您搞砸了CLI。 CLI CLI应用程序无法显示图像,因为CLI是基于文本的。可能有一些支持图像的疯狂库,但在大多数情况下,我认为在CLI应用程序中没有直接的方法。一种解决方法是打印卡的ASCII表示。然后,您的“图像”将基于文本,并可以使用System.println()轻松打印。你可以在网上找到这样的ASCII图片。

Web App - 基于Web的应用程序在很大程度上很容易,但复杂性在于您希望如何处理它。例如,您可以进行API休息调用,根据URL字符串返回正确的PNG图像,或者您可以传递索引。或者您可以使用JSP根据索引呈现具有正确图像的页面。同样,这里的复杂之处在于,有很多方法可以做同样的事情,它们都有优缺点,它们都依赖于你正在使用的框架。这里很酷的部分是浏览器可以完成处理PNG显示的工作。

Swing / AWT - 自从我写了一个基于Swing / AWT的应用程序以来它确实是AGES,但如果内存服务我相信你会想要使用JPanel进行Swing并且可能使用Canvas AWT?其他更适合Swing / AWT的人必须发表评论才能确定。

至于如何将图像连接到索引,再次有几种方法可以做到这一点。您可以创建一个包含索引和图像(路径或完全加载的图像对象)的包装类,并使用您现在拥有的相同列表,或者您可以使用具有键/ Map的内容值,您键可以是索引,值可以是图像(再次,路径或其他)。您甚至可以通过实现java.util.List接口来创建自己的专用List,该接口使用内部List索引号和Map来将索引与图像相关联。

单独使用Map的问题是,MapSet通常不会保持顺序,这意味着如果您尝试按特定顺序将其退回不能。但是,有Map的实现可以维护顺序,即LinkedHashMapTreeMapLinkedHashMap维护密钥的插入顺序,TreeMap使用ComparatorComparable内的对象设置密钥的顺序。

也可能有其他方法可以做到这一点。这实际上取决于你对自己的满意程度以及你想要实现的目标。