我正在学习Java,而我遇到了一个小问题。 应用于我的ArrayList对象的方法.add()并不想编译。 我在另一个程序上尝试了同样的事情(使用不同的参数)并且工作正常,所以这次我做错了,但我无法弄清楚是什么。任何帮助将不胜感激。
import java.util.List;
import java.util.ArrayList;
private List<String> science = new ArrayList<String>();
science.add("geography");
这段代码给出了以下错误:
这是该计划的整个代码:
import java.util.ArrayList;
import java.util.List;
public class Facolta {
private String nome;
private int facilities, tipo;
private List<String> science = new ArrayList<String>();
private List<String> other = new ArrayList<String>();
science.add("geography");
public Facolta(String nome, int facilities, int tipo) {
this.nome = nome;
if (science.toString().contains(nome)) {
this.tipo = 2;
}
else if (other.toString().contains(nome)) {
this.tipo = 1;
}
this.facilities = facilities;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public void getFacilities() {
if (tipo == 1)
System.out.println("Lab number: " + facilities);
else if (tipo == 2)
System.out.println("Library number: " + facilities);
else
System.err.println("Facility not available.");
}
public void setFacilities(int facilities) {
if (facilities < 3) this.facilities = facilities;
else System.err.println("Facility not specified.");
}
}
答案 0 :(得分:2)
无论如何,
List<String> science = Arrays.asList("geography", "geography2");
这适用于您的情况
答案 1 :(得分:1)
您不能将任何类型的代码放在任何类的地方。
在这种情况下,您可以将该行移动到构造函数中。例如。
您也可以使用init块;所以只需戴上牙套
{
sciences.add("blocked");
}
就在那里(有关详细信息,请参阅here。)
但真实的是:我猜science
列表包含了一些学生应该服用的科目。所以它应该是构造函数的参数;而不是源代码中的硬编码该字符串!
另一种方法是使该清单成为真正的“常数”;像这样:
private final List<String> SCIENCES_THAT_GIVE_TIPO = Arrays.asList("geography", "whatever");
让您的意图更清晰!
除此之外:使用 Strings 来表示这些事情当然是简单而直接的;但是设计相当糟糕。所以,以防你想要玩一下;你可能想读一下Java enums;然后考虑将你的不同科学变成一个Enum!
答案 2 :(得分:1)
语法不正确。
science.add(“geography”) - 应该在方法或构造函数中完成。
答案 3 :(得分:0)
我建议使用ArrayList
ArrayList<String> science =new ArrayList<>(Arrays.asList("geography", "geography2"));