如何获取用户输入,将其验证为整数,并使用它来创建多个矩形?

时间:2017-01-18 23:35:57

标签: java

我对编码很陌生,现在,我正在尝试创建一个脚本(如果这就是你所说的),并绘制一些用户输入的矩形随机位置。现在,我在整理代码时遇到了一些困难:

import cs1.Keyboard;
import java.applet.Applet;
import java.awt.*;


public class Rectangles extends Applet{
    public static void main (String[] args){
        String message;

        System.out.println ("Enter an integer:");

        message = Keyboard.readString();

        String input = message;
        int inputInt;
        try{
            inputInt = Integer.parseInt(input);
        } 
        catch (Exception e){
            System.out.println("Not an integer; please use a valid integer");
            System.exit(-1);
        }

        System.out.println ("You entered \"" + message + "\"");
    }


public void paint (Graphics page){
    for(int i=1; i < message; i++){
        int width = 10 + (int) (Math.random() * 40);
        int height = 10 + (int) (Math.random() * 40);
        int x = (int) (Math.random() * (getWidth() - width));
        int y = (int) (Math.random() * (getHeight() - height));
        page.drawRect (width,height,x,y);
        }
    }
}

请原谅我的代码,如果它太乱了!无论如何,我试图将用户输入(消息)转换为公共无效绘图,但我似乎无法在公共类中传输变量。当我尝试组合这些功能时,我得到了一大堆错误:

Rectangles.java:25: error: illegal start of expression
    public void paint (Graphics page){
    ^
Rectangles.java:25: error: illegal start of expression
    public void paint (Graphics page){
           ^
Rectangles.java:25: error: ';' expected
    public void paint (Graphics page){
                     ^
Rectangles.java:25: error: ';' expected
    public void paint (Graphics page){
                                    ^

但是,如果我单独留下代码,我会得到:

Rectangles.java:30: error: cannot find symbol
for(int i=1; i < message; i++){
                 ^
symbol:   variable message
location: class Rectangles

我不确定如何组织这个以便我可以生成用户所需的矩形数量:任何人都可以帮我处理脚本,以便变量可以被public void paint使用吗?

1 个答案:

答案 0 :(得分:0)

在您的代码消息中是一个字符串,您在其中使用for循环并将其与整数变量进行比较。 首先用inputInt替换消息,然后你的for循环应该有效。

根据Oracle文档 -

public void paint(Graphics g) 画这个画布。 大多数Canvas子类的应用程序都应该重写此方法,以便执行一些有用的操作(通常是画布的自定义绘制)。默认操作只是清除画布。覆盖此方法的应用程序不需要调用super.paint(g)。

你是否将Canvas子类化了?我认为你没有子画布,这就是为什么这个方法会抛出错误。

希望这可以解决您的问题。