如何修复我的“非静态变量q1无法从静态上下文中引用”

时间:2014-01-05 04:23:55

标签: compiler-errors

import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Circle3
{
public static class Windows extends Frame
{
    public void paint(Graphics g)
    {
        for(;;)
        {
            int x1 = 1;
            int x = 1;
            int y = 1;
            int y1 = 1;
            for(x = 100;x<=177;x++)
            {
                g.setColor(Color.black);
                CC one = new CC(x);
                g.fillPolygon(CC.q,CC.q1,3);
                for(int z = 0;z<50000;z++)
                {
                    for(int u = 0;u<1000;u++)
                    {
                    }
                }
            }
        }
    }
}

public static void main(String args[])
{
    Windows w = new Windows();
    w.setSize(800,800);
    w.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){System.exit(0);}});
    w.show();
}
}

这是我的代码的主要部分,错误发生在第20行:g.fillPolygon(CC.q,CC.q1,3)。我不知道为什么我会收到此错误,但我现在是编码的新手。下一个代码是我的CC级。

 public class CC
{
public CC(int a)
{
    x = a;
    x1 = x+1;
    y = (int)(100-Math.sqrt(22500-Math.pow(x-100,2)));
    y1 = (int)(100-Math.sqrt(22500-Math.pow(x1-100,2)));
    q = new int[]{x+300,x1+300,400};
    q1 = new int[]{y+300,y1+300,400};
}
public int x;
public int x1;
public int y;
public int y1;
public int[] q;
public int[] q1;
 }

如果您想知道,这是绘制和填充圆圈的代码。

1 个答案:

答案 0 :(得分:0)

我相信你得到错误的原因是因为在调用fillPolygon时你通过类引用q和q1而不是类的实例。你应该传递one.q和one.q1而不是CC.q和CC.q1。