【问题标题】:How to make an object in java to be called from outside Bluej如何使 java 中的对象从 Bluej 外部调用
【发布时间】:2015-03-28 23:12:47
【问题描述】:

我刚进入大学学习编程,他们给我的作业就像作业一样,用 Java 创建一个应用程序,而不是根据他们将收到的边识别不同类型的三角形。

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

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

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

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

更新: 现在返回我: '.class' 被考虑

在这部分代码中:

...
 public static void main (int args[]){
        Triangle obj1 = new *Triangle(int[]* args);
        System.out.print(obj1.triangleCheck());
   }
}

注意:”之间的部分是显示错误存在的地方,“”不是实际代码本身的一部分。 注意 2: 在“更新”之后查看它以查看它的实际上下文。

另外,如果你们中的一些人告诉我如何改进我的代码也会很好,我是面向对象语言的新手。

这里是代码

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

除了改进问题之外,任何建议、想法、评论或其他东西都会非常受欢迎

提前致谢

【问题讨论】:

  • 尝试将您的扫描仪命名为 Triangle 以外的其他名称,因为您已经创建了一个名为 Triangle 的类
  • 还有,String var1 = "";字符串 var2 = "";字符串 var3 = "";字符串 var4 = "";是不必要的。您可以乘坐 =“”

标签: java bluej


【解决方案1】:

它给出该错误的原因是因为您的全局变量,如果从具有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);

【讨论】:

  • 谢谢,'.class' 预期的问题,有什么解决办法?
  • 谢谢,我已经更改了代码,我现在正在使用另一个代码,但无论如何感谢您的帮助:S
猜你喜欢
  • 2015-08-13
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
相关资源
最近更新 更多