你好我得到了一个任务,我必须使用他们的中心坐标和用户输入的半径绘制3个圆圈。赋值具体说明我必须输入中心和半径,我不能分别输入x和y坐标。它们必须作为坐标对(x,y)输入。 这是我的代码。
import java.util.*;
import java.awt.*;
public class Circles {
static Scanner CONSOLE = new Scanner(System.in);
public static final int PANEL_HEIGHT = 300;
public static final int PANEL_WIDTH = 400;
public static void main (String [] args) {
DrawingPanel panel = new DrawingPanel (PANEL_HEIGHT,PANEL_WIDTH);
Graphics g = panel.getGraphics();
System.out.println();
System.out.println("Red Circle data");
System.out.println("Input center of Red circle: ");
int center1 = CONSOLE.nextInt();
System.out.println("Input radius of Red circle: ");
int radius1 = CONSOLE.nextInt();
System.out.println();
System.out.println("Blue Circle data");
System.out.println("Input center of Blue circle: ");
int center2 = CONSOLE.nextInt();
System.out.println("Input radius of Blue circle: ");
int radius2 = CONSOLE.nextInt();
System.out.println();
System.out.println("Green Circle data");
System.out.println("Input center of Green circle: ");
int center3 = CONSOLE.nextInt();
System.out.println("Input radius of Green circle: ");
int radius3 = CONSOLE.nextInt();
g.setColor(Color.RED);
g.fillOval(center1 -radius1 ,center1-radius1 ,radius1 ,radius1);
g.setColor(Color.BLUE);
g.fillOval(center2 -radius2 ,center2-radius2 ,radius2 ,radius2);
g.setColor(Color.GREEN);
g.fillOval(center3 -radius3 ,center3-radius3 ,radius3 ,radius3);
}
}
我的问题是我不知道如何正确输入和存储x和y坐标作为一个int。因为它目前只需要一个数据点,存储它,并将其用作x和y。
System.out.println("Red Circle data");
System.out.println("Input center of Red circle: ");
int center1 = CONSOLE.nextInt();
这里我知道java必须要求值并存储它们。
g.setColor(Color.RED);
g.fillOval(center1(THIS SHOULD BE THE X VALUE) -radius1 ,center1(THIS SHOULD BE THE Y VALUE)-radius1 ,radius1 ,radius1);
然后在这里我必须以某种方式获取存储在上面代码中的值。
请帮助我对此有点新意,并希望得到一些反馈!希望我要求的是有道理的! :S
答案 0 :(得分:0)
不是JAVA编码器,所以我坚持使用C ++,你确定要在单个int中使用x,y对吗?
1. 如果是,则只需编码
例如,如果你有32位int,你的坐标适合16位,那么:
int xy,x,y;
xy = (x&0x0000FFFF) | ((y&0x0000FFFF)<<16); // this makes xy = (x,y)
如果您需要再次解压缩数据,请执行以下操作:
x= xy &0x0000FFFF; if (int(x&00008000)!=0) x|=0xFFFF0000;
y=(xy>>16)&0x0000FFFF; if (int(y&00008000)!=0) y|=0xFFFF0000;
2. 如果是单变量,则使用
数组:
int xy[2],x,y;
xy[0]=x;
xy[1]=y;
或struct / class
int x,y;
struct point { int x,y; } xy;
xy.x=x;
xy.y=y;