如何使 java 中的对象从 Bluej 外部调用
How to make an object in java to be called from outside Bluej
我刚进入大学学习编程,他们给我的作业就像在 java 中创建一个应用程序,而不是根据他们将收到的边实际识别不同类型的三角形。
我对此很满意,但现在我正在尝试理解和编写调用其他方法并在 Bluej 外部显示结果的部分。
有人可以告诉我最后一个方法并向我解释一下它是如何工作的吗?
我真的需要看一些实际的工作代码来了解如何以及何时从 classes 中创建对象,以及如何将这些方法连接到这些方法。
控制台返回这个错误:
不能从静态上下文中引用非静态变量基
更新:
现在正在返回我:
'.class'受人尊敬
这部分代码:
...
public static void main (int args[]){
Triangle obj1 = new *Triangle(int[]* args);
System.out.print(obj1.triangleCheck());
}
}
注意:“”之间的部分显示错误存在,“”不是实际代码的一部分本身。
注意 2: 在 "UPDATE" 之后查看它以在实际上下文中查看它。
此外,如果你们中的一些人告诉我如何改进我的代码也会很好,我是面向对象语言的新手。
这是代码
import java.util.Scanner;
public class Triangle {
int base;
int ladoa;
int ladob;
String res = "";
public Triangle(int arg[]) {
Scanner Triangle = new Scanner( System.in );
System.out.println("Ingrese el tamaño de la Base del triángulo");
int base = Triangle.nextInt();
System.out.println("Ingrese el tamaño del lado A del triángulo");
int ladoa = Triangle.nextInt();
System.out.println("Ingrese el tamaño del lado B del triángulo");
int ladob = Triangle.nextInt();
}
public String triangleCheck(int base, int ladoa, int ladob) {
String baseb = Integer.toString(base);
String sidea = Integer.toString(ladoa);
String sideb = Integer.toString(ladob);
String var1 = "";
String var2 = "";
String var3 = "";
String var4 = "";
int lados=ladoa+ladob;
String ladoss = sidea + sideb;
if (base>=(ladoa+ladob)) {
if (lados==base) {
var1 = "Es un triángulo equilatero, pues sus lados y su base son todos iguales";
var2 = "Lado A + Lado B = " + ladoss;
var3 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3;
} else if (ladoa==ladob && lados < base || lados > base){
var1 = "Es un triánglo isósceles, pues dos de sus lados son iguales y su base es diferente";
var2 = "Lado A = " + ladoss;
var3 = "Lado B = " + ladoss;
var4 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3 + "\n" + var4;
} else if (ladoa > ladob || ladoa < ladob) {
var1 = "Es un triángulo escaleno, pues sus lados y la base son distintas";
var2 = "Lado A = " + ladoss;
var3 = "Lado B = " + ladoss;
var4 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3 + "\n" + var4;
} else {
var1 = "Eso no es un triángulo, pues los lados de un triángulo, no pueden ser sumados menores a la base";
res = var1;
}
} else {
res = "Eso no es un triángulo, pues los lados de un triángulo, no pueden ser sumados menores a la base";
}
return res;
}
public static void main (int args[]){
Triangle obj1 = new Triangle(base, ladoa, ladob);
System.out.print(obj1.triangleCheck());
}
}
更新:
import java.util.Scanner;
public class Triangle {
static int base;
static int ladoa;
static int ladob;
String res = "";
public Triangle(int arg[]) {
Scanner Triangle = new Scanner( System.in );
System.out.println("Ingrese el tamaño de la Base del triángulo");
int base = Triangle.nextInt();
System.out.println("Ingrese el tamaño del lado A del triángulo");
int ladoa = Triangle.nextInt();
System.out.println("Ingrese el tamaño del lado B del triángulo");
int ladob = Triangle.nextInt();
}
public String triangleCheck(int base, int ladoa, int ladob) {
String baseb = Integer.toString(base);
String sidea = Integer.toString(ladoa);
String sideb = Integer.toString(ladob);
String var1 = "";
String var2 = "";
String var3 = "";
String var4 = "";
int lados=ladoa+ladob;
String ladoss = sidea + sideb;
if (base>=(ladoa+ladob)) {
if (lados==base) {
var1 = "Es un triángulo equilatero, pues sus lados y su base son todos iguales";
var2 = "Lado A + Lado B = " + ladoss;
var3 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3;
} else if (ladoa==ladob && lados < base || lados > base){
var1 = "Es un triánglo isósceles, pues dos de sus lados son iguales y su base es diferente";
var2 = "Lado A = " + ladoss;
var3 = "Lado B = " + ladoss;
var4 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3 + "\n" + var4;
} else if (ladoa > ladob || ladoa < ladob) {
var1 = "Es un triángulo escaleno, pues sus lados y la base son distintas";
var2 = "Lado A = " + ladoss;
var3 = "Lado B = " + ladoss;
var4 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3 + "\n" + var4;
} else {
var1 = "Eso no es un triángulo, pues los lados de un triángulo, no pueden ser sumados menores a la base";
var2 = "";
var3 = "";
var4 = "";
res = var1;
}
} else {
res = "Eso no es un triángulo, pues los lados de un triángulo, no pueden ser sumados menores a la base";
}
return res;
}
public static void main (int args[]){
Triangle obj1 = new Triangle(int[] args);
System.out.print(obj1.triangleCheck());
}
}
除了改进问题之外的任何建议、想法、评论或其他内容也会非常受欢迎
提前致谢
它给出该错误的原因是因为您的全局变量,如果从具有 static
修饰符的字段访问它们,它们也需要是 static
。因此,要消除错误,base
、ladoa
和 ladob
需要 static int
s:
// This will remove the problems with the
// error.
static int base;
static int ladoa;
static int ladob;
编辑:
您现在遇到的 .class
预期问题是因为误解了我告诉您的内容。
您正在呼叫:
new Triangle(arg, arg, arg);
当它要求时:
new Triangle(int[] args);
您只需要参数名称(必须是要传递的 int[]
):
new Triangle(args);
我刚进入大学学习编程,他们给我的作业就像在 java 中创建一个应用程序,而不是根据他们将收到的边实际识别不同类型的三角形。
我对此很满意,但现在我正在尝试理解和编写调用其他方法并在 Bluej 外部显示结果的部分。
有人可以告诉我最后一个方法并向我解释一下它是如何工作的吗?
我真的需要看一些实际的工作代码来了解如何以及何时从 classes 中创建对象,以及如何将这些方法连接到这些方法。
控制台返回这个错误: 不能从静态上下文中引用非静态变量基
更新: 现在正在返回我: '.class'受人尊敬
这部分代码:
...
public static void main (int args[]){
Triangle obj1 = new *Triangle(int[]* args);
System.out.print(obj1.triangleCheck());
}
}
注意:“”之间的部分显示错误存在,“”不是实际代码的一部分本身。 注意 2: 在 "UPDATE" 之后查看它以在实际上下文中查看它。
此外,如果你们中的一些人告诉我如何改进我的代码也会很好,我是面向对象语言的新手。
这是代码
import java.util.Scanner;
public class Triangle {
int base;
int ladoa;
int ladob;
String res = "";
public Triangle(int arg[]) {
Scanner Triangle = new Scanner( System.in );
System.out.println("Ingrese el tamaño de la Base del triángulo");
int base = Triangle.nextInt();
System.out.println("Ingrese el tamaño del lado A del triángulo");
int ladoa = Triangle.nextInt();
System.out.println("Ingrese el tamaño del lado B del triángulo");
int ladob = Triangle.nextInt();
}
public String triangleCheck(int base, int ladoa, int ladob) {
String baseb = Integer.toString(base);
String sidea = Integer.toString(ladoa);
String sideb = Integer.toString(ladob);
String var1 = "";
String var2 = "";
String var3 = "";
String var4 = "";
int lados=ladoa+ladob;
String ladoss = sidea + sideb;
if (base>=(ladoa+ladob)) {
if (lados==base) {
var1 = "Es un triángulo equilatero, pues sus lados y su base son todos iguales";
var2 = "Lado A + Lado B = " + ladoss;
var3 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3;
} else if (ladoa==ladob && lados < base || lados > base){
var1 = "Es un triánglo isósceles, pues dos de sus lados son iguales y su base es diferente";
var2 = "Lado A = " + ladoss;
var3 = "Lado B = " + ladoss;
var4 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3 + "\n" + var4;
} else if (ladoa > ladob || ladoa < ladob) {
var1 = "Es un triángulo escaleno, pues sus lados y la base son distintas";
var2 = "Lado A = " + ladoss;
var3 = "Lado B = " + ladoss;
var4 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3 + "\n" + var4;
} else {
var1 = "Eso no es un triángulo, pues los lados de un triángulo, no pueden ser sumados menores a la base";
res = var1;
}
} else {
res = "Eso no es un triángulo, pues los lados de un triángulo, no pueden ser sumados menores a la base";
}
return res;
}
public static void main (int args[]){
Triangle obj1 = new Triangle(base, ladoa, ladob);
System.out.print(obj1.triangleCheck());
}
}
更新:
import java.util.Scanner;
public class Triangle {
static int base;
static int ladoa;
static int ladob;
String res = "";
public Triangle(int arg[]) {
Scanner Triangle = new Scanner( System.in );
System.out.println("Ingrese el tamaño de la Base del triángulo");
int base = Triangle.nextInt();
System.out.println("Ingrese el tamaño del lado A del triángulo");
int ladoa = Triangle.nextInt();
System.out.println("Ingrese el tamaño del lado B del triángulo");
int ladob = Triangle.nextInt();
}
public String triangleCheck(int base, int ladoa, int ladob) {
String baseb = Integer.toString(base);
String sidea = Integer.toString(ladoa);
String sideb = Integer.toString(ladob);
String var1 = "";
String var2 = "";
String var3 = "";
String var4 = "";
int lados=ladoa+ladob;
String ladoss = sidea + sideb;
if (base>=(ladoa+ladob)) {
if (lados==base) {
var1 = "Es un triángulo equilatero, pues sus lados y su base son todos iguales";
var2 = "Lado A + Lado B = " + ladoss;
var3 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3;
} else if (ladoa==ladob && lados < base || lados > base){
var1 = "Es un triánglo isósceles, pues dos de sus lados son iguales y su base es diferente";
var2 = "Lado A = " + ladoss;
var3 = "Lado B = " + ladoss;
var4 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3 + "\n" + var4;
} else if (ladoa > ladob || ladoa < ladob) {
var1 = "Es un triángulo escaleno, pues sus lados y la base son distintas";
var2 = "Lado A = " + ladoss;
var3 = "Lado B = " + ladoss;
var4 = "Base = " + baseb;
res = var1 + "\n" + var2 + "\n" + var3 + "\n" + var4;
} else {
var1 = "Eso no es un triángulo, pues los lados de un triángulo, no pueden ser sumados menores a la base";
var2 = "";
var3 = "";
var4 = "";
res = var1;
}
} else {
res = "Eso no es un triángulo, pues los lados de un triángulo, no pueden ser sumados menores a la base";
}
return res;
}
public static void main (int args[]){
Triangle obj1 = new Triangle(int[] args);
System.out.print(obj1.triangleCheck());
}
}
除了改进问题之外的任何建议、想法、评论或其他内容也会非常受欢迎
提前致谢
它给出该错误的原因是因为您的全局变量,如果从具有 static
修饰符的字段访问它们,它们也需要是 static
。因此,要消除错误,base
、ladoa
和 ladob
需要 static int
s:
// This will remove the problems with the
// error.
static int base;
static int ladoa;
static int ladob;
编辑:
您现在遇到的 .class
预期问题是因为误解了我告诉您的内容。
您正在呼叫:
new Triangle(arg, arg, arg);
当它要求时:
new Triangle(int[] args);
您只需要参数名称(必须是要传递的 int[]
):
new Triangle(args);