练习 Java 题
Practice Java problems
我正在做这个大学练习,我都被卡住了,我应该制作一个程序来画圆和线。它有 3 个包,Evaluar(with the main class), Dibujo(with the drawing class) and Forma (with 4 class, The FATHER , forma, formabasica which heritage form Forma and Circulo&Linea 继承自 formaBasica,这里是主要的 class.
package PaqueteAplicacion;
import PaqueteFormas.Forma;
import java.util.Scanner;
import PaqueteFormas.Circulo;
import PaqueteFormas.Linea;
public abstract class Evaluar {
public static void main (String[] args) {
//Creamos atributos para lo que graficaremos
Forma linea1;
Forma linea2;
linea1 = new Linea(); //PROBLEM HERE
linea2 = new Linea(1,1);//PROBLEM HERE
}
Eclipse 的错误 "Cannot instantiate the type Linea",我不知道为什么会给我这个问题。
这是我的 Linea class,我和 Circulo 有同样的问题。
package PaqueteFormas;
import java.util.Scanner;
import PaqueteGraficos.Dibujo;
public class Linea extends FormaBasica {
//Atributos
int numSegmentos;
public Linea(){
}
public Linea(int ejeX, int ejeY){
super(ejeX,ejeY);
}
public void cambiarTamano(int incrementoSegmentos){
numSegmentos = incrementoSegmentos;
}
public void paintComponent() {
Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);//More Problem ejeX cannot be resolved as a variable
}
}
如果您需要更多信息,请告诉我,谢谢!
抱歉,我是 Whosebug 的新手,所以如果我的 post 不正确,请告诉我。
我添加了项目的 class' java 的其余部分:
这是父亲:Forma 的 class:
package PaqueteFormas;
public abstract class Forma {
//Añadimos atributos
private int x,y;
public Forma()
{
this.x = 1;
this.y = 1;
}
public Forma( int ejeX, int ejeY) {
this.x = ejeX;
this.y = ejeY;
}
//Establece la edición atributo
public void setX(int ejeX) {
x = ejeX;
}
public void setY(int ejeY) {
y = ejeY;
}
public int getX() {
return x;
};
public int getY() {
return y;
};
public void moverEjeX(int variacionEnX) {
x += variacionEnX;
}
public void moverEjeY(int variacionEnY) {
y += variacionEnY;
}
public abstract void paintComponent();
public abstract void cambiarTamano (int variacionTamano);
}
来自 Forma 的遗产 class:
package PaqueteFormas;
public abstract class FormaBasica extends Forma {
public FormaBasica(){//Constructor por defecto
super(1,1);
}
public FormaBasica(int ejeX, int ejeY){//Constructor pasando los atributos
super(ejeX,ejeY);
}
}
来自 FormaBasica 的其他 class' 遗产
package PaqueteFormas;
import java.util.Scanner;
import PaqueteGraficos.Dibujo;
public class Linea extends FormaBasica {
int numSegmentos;
public Linea(){
}
public Linea(int ejeX, int ejeY){
super(ejeX,ejeY);
}
public void cambiarTamano(int incrementoSegmentos){
numSegmentos = incrementoSegmentos;
}
public void paintComponent() {
Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);
}
}
你的问题的根源在于 Linea
中的这一行:
Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);//More Problem ejeX cannot be resolved as a variable
错误消息是有道理的:paintComponent
方法中没有变量 ejeX
,这一行所在的位置,也没有字段(实例或 class 变量)ejeX
在 Linea
class 中。其中一个构造函数中有一个参数 ejeX
。但是这里的构造函数就像一个方法,你不能访问另一个方法中的参数或变量,因为这样做没有意义。方法在不同的时间被调用,所以当另一个方法被调用并执行时,一个方法的变量通常不存在。当然,ejeY
也一样。
我假设您打算使用创建对象时传递给 Linea
构造函数的 ejeX
和 ejeY
的值。这些已经存储在Forma
superclass中,你可以通过那个class的getX
和getY
方法来获取它们。所以解决方法是将行更改为:
Dibujo.dibujarLinea(getX(), getY(), numSegmentos);
对于您的其他问题:上述错误阻止了 Linea
class 的编译。当它不能被编译时,它也不能被实例化。所以我希望现在也能解决这个问题。
如果在清除旧错误时出现新的错误消息,请不要失望,这是正常的。
而且不是不友好,恰恰相反:看看你能不能找到愿意帮助你的当地人。也许是同学或助教? Stack Overflow 上的周转时间太长,所以只要你依赖我们,你的进步就会很慢。当您 post 编写这么多代码时更是如此,因为许多用户会放弃阅读所有代码。
我正在做这个大学练习,我都被卡住了,我应该制作一个程序来画圆和线。它有 3 个包,Evaluar(with the main class), Dibujo(with the drawing class) and Forma (with 4 class, The FATHER , forma, formabasica which heritage form Forma and Circulo&Linea 继承自 formaBasica,这里是主要的 class.
package PaqueteAplicacion;
import PaqueteFormas.Forma;
import java.util.Scanner;
import PaqueteFormas.Circulo;
import PaqueteFormas.Linea;
public abstract class Evaluar {
public static void main (String[] args) {
//Creamos atributos para lo que graficaremos
Forma linea1;
Forma linea2;
linea1 = new Linea(); //PROBLEM HERE
linea2 = new Linea(1,1);//PROBLEM HERE
}
Eclipse 的错误 "Cannot instantiate the type Linea",我不知道为什么会给我这个问题。
这是我的 Linea class,我和 Circulo 有同样的问题。
package PaqueteFormas;
import java.util.Scanner;
import PaqueteGraficos.Dibujo;
public class Linea extends FormaBasica {
//Atributos
int numSegmentos;
public Linea(){
}
public Linea(int ejeX, int ejeY){
super(ejeX,ejeY);
}
public void cambiarTamano(int incrementoSegmentos){
numSegmentos = incrementoSegmentos;
}
public void paintComponent() {
Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);//More Problem ejeX cannot be resolved as a variable
}
}
如果您需要更多信息,请告诉我,谢谢!
抱歉,我是 Whosebug 的新手,所以如果我的 post 不正确,请告诉我。
我添加了项目的 class' java 的其余部分: 这是父亲:Forma 的 class:
package PaqueteFormas;
public abstract class Forma {
//Añadimos atributos
private int x,y;
public Forma()
{
this.x = 1;
this.y = 1;
}
public Forma( int ejeX, int ejeY) {
this.x = ejeX;
this.y = ejeY;
}
//Establece la edición atributo
public void setX(int ejeX) {
x = ejeX;
}
public void setY(int ejeY) {
y = ejeY;
}
public int getX() {
return x;
};
public int getY() {
return y;
};
public void moverEjeX(int variacionEnX) {
x += variacionEnX;
}
public void moverEjeY(int variacionEnY) {
y += variacionEnY;
}
public abstract void paintComponent();
public abstract void cambiarTamano (int variacionTamano);
}
来自 Forma 的遗产 class:
package PaqueteFormas;
public abstract class FormaBasica extends Forma {
public FormaBasica(){//Constructor por defecto
super(1,1);
}
public FormaBasica(int ejeX, int ejeY){//Constructor pasando los atributos
super(ejeX,ejeY);
}
}
来自 FormaBasica 的其他 class' 遗产
package PaqueteFormas;
import java.util.Scanner;
import PaqueteGraficos.Dibujo;
public class Linea extends FormaBasica {
int numSegmentos;
public Linea(){
}
public Linea(int ejeX, int ejeY){
super(ejeX,ejeY);
}
public void cambiarTamano(int incrementoSegmentos){
numSegmentos = incrementoSegmentos;
}
public void paintComponent() {
Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);
}
}
你的问题的根源在于 Linea
中的这一行:
Dibujo.dibujarLinea(ejeX, ejeY, numSegmentos);//More Problem ejeX cannot be resolved as a variable
错误消息是有道理的:paintComponent
方法中没有变量 ejeX
,这一行所在的位置,也没有字段(实例或 class 变量)ejeX
在 Linea
class 中。其中一个构造函数中有一个参数 ejeX
。但是这里的构造函数就像一个方法,你不能访问另一个方法中的参数或变量,因为这样做没有意义。方法在不同的时间被调用,所以当另一个方法被调用并执行时,一个方法的变量通常不存在。当然,ejeY
也一样。
我假设您打算使用创建对象时传递给 Linea
构造函数的 ejeX
和 ejeY
的值。这些已经存储在Forma
superclass中,你可以通过那个class的getX
和getY
方法来获取它们。所以解决方法是将行更改为:
Dibujo.dibujarLinea(getX(), getY(), numSegmentos);
对于您的其他问题:上述错误阻止了 Linea
class 的编译。当它不能被编译时,它也不能被实例化。所以我希望现在也能解决这个问题。
如果在清除旧错误时出现新的错误消息,请不要失望,这是正常的。
而且不是不友好,恰恰相反:看看你能不能找到愿意帮助你的当地人。也许是同学或助教? Stack Overflow 上的周转时间太长,所以只要你依赖我们,你的进步就会很慢。当您 post 编写这么多代码时更是如此,因为许多用户会放弃阅读所有代码。