找不到符号,虽然它是在java中定义的

时间:2016-05-02 23:50:34

标签: java

public class CategoryObservationType extends CategoryObservation
{
private String code;
private String name;
private String categories;
private int catlimit = 1;
String[] Categories;

public CategoryObservationType(String name, String code)
{
  this.name = name;
  this.code = code;
  Categories[catlimit] = new Categories(name,code);
  catlimit ++;
}

public String getCode()
{
  return code;
}
public String getName()
{
  return name;
}


public String setName(String name)
{
  this.name = name;
  return name;
}
public String setCode(String code)
{
   this.code = code;
   return code;
}
} 

我是新手,我不明白为什么我得到输出错误无法找到符号类别它发生在第24行,类别[catlimit] =新类别(名称,代码);

1 个答案:

答案 0 :(得分:1)

您已将Categories定义为字符串数组:

String[] Categories;

如果这是你的意图,你需要将它初始化为String数组。但是,我发现您已完成以下操作:

Categories[/*some index*/] = new Categories(name,code);

对我而言,这表示您需要Category个对象的数组,大概使用catLimit作为数组的大小(注意:我是从臀部编码 - 这可能不起作用!):

// Your field:
private Category[] categories = new Category[catLimit];
...
// In your method:
categories[/*some index*/] = new Category(name,code);

如果是这种情况,那么您还需要将Category定义为对象。这就是说,我看到你的班级CategoryObservationType:我认为这是Category对象?如果是这样,我注意到的代码就会改变(再次,从臀部编码):

// Your field:
private CategoryObservationType[] categories = new CategoryObservationType[catLimit];
...
// In your method:
categories[/*some index*/] = new CategoryObservationType(name,code);

您会在此处看到我已使用catLimit替换了您方法中的/*some index*/。如果catLimit是数组的大小,正如我怀疑的那样,那么使用它作为索引将为您提供访问数组空间的例外。如果你来自另一种编程语言,我知道这似乎违反直觉:其他语言允许你使用myArray[sizeOfArray] = elementToAppend语法来扩展数组。 你不能用Java做到这一点:你需要创建一个新数组,或者更简单地使用LinkedList作为你的集合类型。您可以使用get(index)为其编入索引,然后使用add(index)添加到其中。

希望这有帮助!