我对编码很陌生,现在,我正在尝试创建一个脚本(如果这就是你所说的),并绘制一些用户输入的矩形随机位置。现在,我在整理代码时遇到了一些困难:
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使用吗?
答案 0 :(得分:0)
在您的代码消息中是一个字符串,您在其中使用for循环并将其与整数变量进行比较。 首先用inputInt替换消息,然后你的for循环应该有效。
根据Oracle文档 -
public void paint(Graphics g) 画这个画布。 大多数Canvas子类的应用程序都应该重写此方法,以便执行一些有用的操作(通常是画布的自定义绘制)。默认操作只是清除画布。覆盖此方法的应用程序不需要调用super.paint(g)。
你是否将Canvas子类化了?我认为你没有子画布,这就是为什么这个方法会抛出错误。
希望这可以解决您的问题。