【问题标题】:"Cannot find symbol error" in my Triangle class我的三角形类中的“找不到符号错误”
【发布时间】:2013-10-27 23:29:59
【问题描述】:

我无法弄清楚为什么我会收到 num 和 triangle 类型变量的 cannot find symbol 错误。

这是课程:

public class Triangle
{
    private int s1;
    private int s2;
    private int s3;

    public Triangle (int s1, int s2, int s3)
{
        s1= num1;
        s2= num2;
        s3= num3;
}

    public String toString()
    {
    return (s1 + " " + s2 + " " + s3);
    }

    public boolean is_equilateral(){
if(s1==s2 && s2==s3 && s3==s1)
    {
    return Triangle.is_equilateral;
    }
else
{
    return false;
}
}

    public boolean is_isosceles(){
if((s1==s2)||(s2==s3)||(s3==s1))
{
    return Triangle.is_isosceles;
}
else
{
    return false;
}
}

    public boolean is_scalene(){
if(s1!=s2 && s2!=s3 && s3!=s1)
{
    return Triangle.is_scalene;
}
else
{
    return false;
}
}


    }

这是程序:

import java.util.Scanner;
public class Assignment5 {

   //===========================================================
   // Create and determine properties of various triangles.
   //===========================================================
   public static void main (String[] args) {

      Scanner console = new Scanner(System.in);
      int num1;
      int num2;
      int num3;
      String another;
      do
      {
         System.out.println("Enter the sides of the triangle: ");
         num1 = console.nextInt();
         num2 = console.nextInt();
         num3 = console.nextInt();

         Triangle myTriangle = new Triangle (num1, num2, num3);


        System.out.println(myTriangle.toString() + " triangle:");

        //check the isosceles
        if (myTriangle.is_isosceles())
           System.out.println("\tIt is isosceles");
        else
           System.out.println("\tIt is not isosceles");

        //check the equilateral
        if (myTriangle.is_equilateral())
           System.out.println("\tIt is equilateral");
        else
           System.out.println("\tIt is not a equilateral");

        //check the scalene
        if (myTriangle.is_scalene())
           System.out.println("\tIt is scalene");
        else
           System.out.println("\tIt is not scalene");


        System.out.println();
        System.out.print("Check another Triangle (y/n)? ");
        another = console.next();

    } while (another.equalsIgnoreCase("y"));


   }  // method main

}  // class Assignment5

我对 Java 还很陌生,如果这是一个明显的问题,我很抱歉。

【问题讨论】:

  • 忘了说这个程序是一个测试程序,我不能编辑。

标签: java compiler-errors runtime-error symbols


【解决方案1】:
private int s1; // these belong to the class
private int s2;
private int s3;

public Triangle (int s1, int s2, int s3) // these belong to the constructor
{
        s1= num1; // num1 isn't declared anywhere
        s2= num2;
        s3= num3;
}

您的类变量和构造函数的参数都命名为s1 - s3

您需要将参数更改为num1 - num3,或更改赋值语句以使用this 关键字来引用类变量。这是第一种方法:

private int s1; // these belong to the class
private int s2;
private int s3;

public Triangle (int num1, int num2, int num3) // these belong to the constructor
{
        s1 = num1;
        s2 = num2;
        s3 = num3;
}

Providing Constructors for Your Classes

【讨论】:

  • 好的,所以我将实例变量更改为 side1-side3,但现在我收到一个错误,提示它找不到符号 s1-s3。
  • @DarbyVance 这些不是你应该改变的。参数是括号中的内容。 Triangle (int s1, int s2, int s3)
  • 哦,好的。谢谢。我真的很感激帮助。抱歉,我在一些基本概念方面还是有点问题。
  • @DarbyVance 没问题。我在答案的末尾发布了一个非常好的综合 Java 教程的链接。
  • 酷,这将非常有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 2020-01-10
  • 1970-01-01
  • 2020-05-03
  • 2019-01-13
  • 2018-05-30
  • 2015-01-26
相关资源
最近更新 更多