.add()方法不适用于ArrayList

时间:2016-12-21 12:58:54

标签: java list arraylist

我正在学习Java,而我遇到了一个小问题。 应用于我的ArrayList对象的方法.add()并不想编译。 我在另一个程序上尝试了同样的事情(使用不同的参数)并且工作正常,所以这次我做错了,但我无法弄清楚是什么。任何帮助将不胜感激。

import java.util.List;
import java.util.ArrayList;
private List<String> science = new ArrayList<String>();
science.add("geography");

这段代码给出了以下错误:

  • 语法错误,插入&#34;)&#34;完成MethodDeclaration
  • 语法错误,插入&#34; SimpleName&#34;去完成  QualifiedName
  • 令牌上的语法错误&#34;。&#34;,@此符号之后的预期
  • 语法错误,插入&#34;标识符(&#34;完成  MethodHeaderName

这是该计划的整个代码:

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.");
        }

}

4 个答案:

答案 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"));