简体   繁体   English

尝试进行构造函数链接时,我不断收到“错误:找不到符号”

[英]I keep getting “error: cannot find symbol” when trying to do constructor chaining

So this is the part of my code that contains the constructors.所以这是我的代码中包含构造函数的部分。 As you can see, the purpose is to have the constructors take in less parameters and call the most specific constructors.如您所见,目的是让构造函数接受更少的参数并调用最具体的构造函数。 I thought I initiated my values in the first constructor.我以为我在第一个构造函数中启动了我的值。 Why can it not find my symbol?为什么找不到我的符号?

Here my code:这是我的代码:

 public class Frog{

// instance variables 
 private String name;
 private int  age;
 private double tongueSpeed;
 private boolean isFrogLet;
 private  String species;

**// Third constructor** 
public Frog( String Name){
 this(Name, Age, TongueSpeed, IsFrogLet, Species);
 
 }


**//second constructor** 
 public Frog(String Name, int ageInYears, double TongueSpeed){
   this(Name, Age, TongueSpeed, IsFrogLet, Species);
   name= Name;
   age = ageInYears;
   tongueSpeed= TongueSpeed;
 }

**// most specific constructor**
 public Frog( String Name, int age, double TongueSpeed, boolean IsFrogLet, String Species){
   name = Name;
   this.age = Age;
   tongueSpeed = TongueSpeed;
   isFrogLet= IsFrogLet;
   species = Species;
 }

public void grow(int months){
 age = age + months;
 while ( age < 12){
  tongueSpeed++;
 }
 if (age>5 & age>30){
  double highRes= age-30;
  tongueSpeed= tongueSpeed-highRes;
 }
 if (age>1 & age <7){
  isFrogLet = true;
 }
}

}

-This is my error i'm getting: - 这是我得到的错误:

Frog.java:12: error: cannot find symbol
 this(Name, Age, TongueSpeed, IsFrogLet, Species);
            ^
  symbol:   variable Age
  location: class Frog
Frog.java:12: error: cannot find symbol
 this(Name, Age, TongueSpeed, IsFrogLet, Species);
                 ^
  symbol:   variable TongueSpeed
  location: class Frog
Frog.java:12: error: cannot find symbol
 this(Name, Age, TongueSpeed, IsFrogLet, Species);
                              ^
  symbol:   variable IsFrogLet
  location: class Frog
Frog.java:12: error: cannot find symbol
 this(Name, Age, TongueSpeed, IsFrogLet, Species);
                                         ^
  symbol:   variable Species
  location: class Frog
Frog.java:19: error: cannot find symbol
   this(Name, Age, TongueSpeed, IsFrogLet, Species);
              ^
  symbol:   variable Age
  location: class Frog
Frog.java:19: error: cannot find symbol
   this(Name, Age, TongueSpeed, IsFrogLet, Species);
                                ^
  symbol:   variable IsFrogLet
  location: class Frog
Frog.java:19: error: cannot find symbol
   this(Name, Age, TongueSpeed, IsFrogLet, Species);
                                           ^
  symbol:   variable Species
  location: class Frog
Frog.java:28: error: cannot find symbol
   this.age = Age;
              ^
  symbol:   variable Age
  location: class Frog

I think you are getting the concept of constructor overloading wrong.我认为您对构造函数重载的概念有所误解。 **// Third constructor** is taking in only name, but you are still trying to pass other stuff to this . **// Third constructor**只接受名称,但您仍在尝试将其他内容传递给this You can't pass stuff if it does not exist.如果东西不存在,你就不能传递它。 So pass what comes from the parameters and set other stuff to null like so:因此,传递来自参数的内容并将其他内容设置为null ,如下所示:

public Frog( String Name){
   this(Name, 0, 0.0, false, null));
}

Same applies to other constructors.同样适用于其他构造函数。 See what the parameters of concrete constructors is and set other stuff to null .查看具体构造函数的参数是什么,并将其他内容设置为null

the error is self-explanatory.该错误是不言自明的。 You are not creating variables with the specific names in your second and third constructor before passing them to the most specific constructor.在将它们传递给最具体的构造函数之前,您不会在第二个和第三个构造函数中创建具有特定名称的变量。
You should pass either pass the exact variable that you receive in your constructor to the underlying constructor or you should pass some default values to the most specific constructor instead of these variables (aka symbols).您应该将您在构造函数中收到的确切变量传递给底层构造函数,或者您应该将一些默认值传递给最具体的构造函数,而不是这些变量(又名符号)。
so you should call your second and third constructors in the following ways:所以你应该通过以下方式调用你的第二个和第三个构造函数:

// Third constructor
public Frog(String Name) {
    this(Name, 0, 0.0, false, "");
}


//second constructor
public Frog(String Name, int ageInYears, double TongueSpeed) {
    this(Name, ageInYears, TongueSpeed, false, "");
}  

Hope this helps希望这可以帮助

Error Cause错误原因

You are using the non-existing variables as your instance-level are in camelCase no in title Case variables other than this please find refactored code and try to use camelCase for the variable您正在使用不存在的变量,因为您的实例级别在 camelCase 中没有在标题中除此之外的案例变量请查找重构代码并尝试使用 camelCase 作为变量

public class Frog {
    private String name;
    private int age;
    private double tongueSpeed;
    private boolean isFrogLet;
    private String species;

    public Frog(String name, int age, double tongueSpeed, boolean isFrogLet, String species) {
        this.name = name;
        this.age = age;
        this.tongueSpeed = tongueSpeed;
        this.isFrogLet = isFrogLet;
        this.species = species;
    }

    public Frog(String name) {
        this.name = name;
    }

    public Frog(String name, int ageInYears, double TongueSpeed) {
        this.name = name;
        this.age = ageInYears;
        this.tongueSpeed = TongueSpeed;
    }

    public void grow(int months) {
        age = age + months;
        while (age < 12) {
            tongueSpeed++;
        }
        if (age > 5 & age > 30) {
            double highRes = age - 30;
            tongueSpeed = tongueSpeed - highRes;
        }
        if (age > 1 & age < 7) {
            isFrogLet = true;
        }
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么为什么不断出现“找不到符号”错误? - Why do I keep getting “cannot find symbol” error? 使用Comparable时,我不断获取找不到符号错误 - I keep on getting Cannot find Symbol Error when using Comparable JAVA:为什么继续出现错误:尝试访问另一个类文件时找不到符号? - JAVA: Why do I keep getting the error: cannot find symbol when I try to access another class file? 我在尝试将堆栈实现为数组的过程中不断收到“找不到符号”错误 - I keep getting a 'cannot find symbol' error in Java trying to implement a Stack as an array 我不断收到错误消息说找不到符号-可变键盘 - I keep getting a error saying cannot find symbol - variable keyboard 我在println中不断收到“错误:找不到符号” - I keep getting “error:Cannot find symbol” in println 每当编译时,我都会不断收到无法找到符号的错误 - Whenever compile, I keep getting the error that it cannot find the symbol 我不断收到找不到符号方法compareTo ERROR - I keep getting Cannot find symbol method compareTo ERROR 为什么会不断出现错误:找不到变量“重量”和“行星”的符号? - Why do I keep getting the error: cannot find symbol for variables “weight” and “planet”? 使用另一个文件中的 class 时,我不断收到一条错误消息,提示“找不到符号” - I keep getting an error that say “cannot find symbol” when using a class from another file
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM