如何接收Array的用户输入然后用于绘制方法?

时间:2013-11-24 00:50:09

标签: java arrays swing awt paint

package package13;

import java.awt.Graphics;
import java.util.Scanner;

import javax.swing.JApplet;

public class BarChartApplet extends JApplet {


    final int baseX=30;
    final int baseY=100;
    final int width=10;
    final int space=30;

    //int height[]={30,20,40,90};

    int height[]=new int[4];

    System.out.println("Enter 4 heights of the bars");
    Scanner scan = new Scanner (System.in);

    for (int k=0;k<height.length;k++) {
    height[k]=scan.nextInt();
    }

    int upperLeftX;
    int upperLeftY;


    public void paint(Graphics g) {

        g.drawLine(5, 100, 200, 100);

        for (int i=0;i<height.length;i++) {

            upperLeftX=baseX+i*(width+space);
            upperLeftY=baseY-height[i];
            g.fillRect(upperLeftX,upperLeftY,width,height[i]);

        }

    }
}}

我正在尝试获取数组值的用户输入。我正在使用这些数组的值来设置我正在创建的条形图中条形的高度。我遇到的问题是当我尝试创建一个System.out.print来要求用户输入值时我得到一个错误,因为我没有在(public static void main)下使用它,但当我尝试添加public时static void main,我得到了paint方法的错误。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您需要将代码放入方法中。方法是唯一可以执行的方法。 main方法是任何Java程序的入口点。它必须是静态的,因为还不存在任何实例。

此代码特别需要包含在main中:

public static void main(String[] args) {
    int height[]=new int[4];

    System.out.println("Enter 4 heights of the bars");
    Scanner scan = new Scanner (System.in);

    for (int k=0;k<height.length;k++) {
        height[k]=scan.nextInt();
    }
}

我也注意到你从未真正称过油漆。我不知道在这里建议什么,因为我不知道你想要做什么。您希望它如何/为什么运行?

答案 1 :(得分:0)

这是学习java的常见问题。您必须声明public static void main(String[] args){}方法,因为这是应用程序开始执行的位置。您可以将此方法视为与您的班级分开。它仍然必须在类中声明,但是你可以在任何类中声明该方法并使用它来执行操作,区别在于如果在另一个类中声明它,则必须从该类执行该程序。

为了在main中使用您班级中的方法,您可以执行以下两项操作之一:

将方法声明为static。这意味着该方法不直接与该类的任何一个对象相关联,而只是该类本身的一部分。所以,如果你有一个班级:

public class Apple{
    public void eat(){}
    public static void describe(){}
}

然后你必须有一个特定的new Apple yourApple().eat();吃,但你可以通过Apple.describe();描述任何苹果。事实上这个例子有点虚构,因为在现实生活中你可以描述任何一个特定的苹果以及一般的苹果,但在这个java案例中你只能描述一个普通的苹果,如果你去new Apple yourApple().describe();它将是等价的到Apple.describe()

这种使用方法的静态方法很难扩展到大型项目,因为它试图解决java的类格式,但它是一个很好的快速方法来制作一个简单的例子。我已经显示的第二种方式称为实例化,它的工作方式是在主类中创建一个Apple并在其上调用方法:

public class Apple{
    public static void main(String[] args){
        Apple apple = new Apple();
        Apple.eat();
    }
    public void eat(){
        System.out.println("Nom");
    }
}

我希望有所帮助。