如何使 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。因此,要消除错误,baseladoaladob 需要 static ints:

// 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);