0

我正在编写一个小程序,它将随机挑选 10 张卡片并在屏幕上显示它们。但是,我收到一个 .class 错误和一个 ; 当我尝试传递字符串 [] 时需要错误。有人帮忙吗?这是我的代码:

import java.awt.Graphics;
import java.awt.Color;
import java.awt.Image;
import java.applet.Applet;
import java.lang.Math;
import java.util.Random;

public class unit12Assignment extends Applet
{
Image card1 ... card52;

public void init()
{
    card1 = getImage( getDocumentBase(), "c1.gif" );
    ...
    card52 = getImage( getDocumentBase(), "sk.gif" );
}

public void getCards()
{
    String cardNumber; 
    double cardRandom;
    int cardRandomNumber;
    String[] cardSelection = new String[10];
    Random ran = new Random();

    for (int number = 0; number <=  9; )
    {
        cardRandom = ran.nextInt(52) + 1;
        cardRandomNumber = (int) Math.round( cardRandom );

        if ( cardRandomNumber > 0 && cardRandomNumber <= 52 )
        { 
            cardNumber =  "card" + cardRandomNumber;
            number++;
        }
    }   
    paint( String[] cardSelection );
}

public void paint(Graphics g, String[] card)
{
    setBackground( Color.green );
    g.drawImage( card[0], 10, 10, this);
    g.drawImage( card[1], 90, 10, this);
    g.drawImage( card[2], 170, 10, this);
    g.drawImage( card[3], 250, 10, this);
}

}

4

2 回答 2

2

这一行:

paint( String[] cardSelection );

在语法上应该是

paint( cardSelection );

您只需String[]在第一次声明变量时在变量前写上类型(例如 )。从那里可以只用它的名字来引用它。

我还注意到它paint需要一个Graphics参数以及 a String[],因此您还需要将其传入:

Graphics g = getGraphicsSomehow();
paint(g, cardSelection);

编辑:有关使用替代解决方案的免责声明,请参阅Andrew Thompson 的回答。Graphics

于 2012-09-06T22:19:03.963 回答
1

任何涉及的事情getGraphics()都是一个脆弱的解决方案。

如果用户拖动另一个另一个应用程序。在浏览器上方并覆盖小程序,然后最小化其他应用程序。它可能会擦除自定义绘制的像素。请参阅执行自定义绘画 以了解如何正确绘画(分解为“当被告知这样做时绘画”)。

另一种方法是使用 aBufferedImage进行渲染并将其显示在JLabel. 在需要时绘制到图像,然后重新绘制标签。

于 2012-09-08T01:52:57.313 回答