如何使从Bluej外部调用java中的对象

时间:2015-03-28 23:12:47

标签: java bluej

我只是在大学里进入学习编程,他们就像家庭作业一样在java中创建一个应用程序而不是根据他们收到的方面确定不同类型的三角形。

我对此很好,但现在我试图理解并编写调用其他方法的部分并在Bluej之外显示结果。

有人能给我最后一种方法并向我解释一下它是如何工作的吗?

我真的需要看一些实际的工作代码,以了解如何以及何时从类中创建对象,以及如何将方法连接到这些方法。

控制台正在回复此错误: 非静态变量库不能从静态上下文引用

更新 现在回来了我: '的.class' espected

在这部分代码中:

...
 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());
   }
}

任何建议,想法,评论或其他改善问题的内容都会得到很大的启发

提前致谢

1 个答案:

答案 0 :(得分:1)

它给出该错误的原因是因为您的全局变量,如果从具有static修饰符的字段访问它们,则它们也需要static 。因此,为了消除错误,baseladoaladob需要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);