为什么我的构造函数不起作用

时间:2015-05-10 19:53:46

标签: java class

我在java代码中包含了类型错误的实例,我不知道我的java代码在下面是什么错误

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class phase45 {
  public class Vertex {
    public Vertex(Integer na){ name = na;}
    private Integer name ;
    public Integer getname(){
        return name;
    }
    ArrayList adjs = new ArrayList<Integer>();
}
public class graph {
//  public Integer name ;
    ArrayList Vertexes = new ArrayList<Vertex>();
    public Vertex GetVertex(Integer name){
        for(int i = 0; i < Vertexes.size(); i++){
            if (((Vertex) Vertexes.get(i)).name == name)
                return (Vertex) Vertexes.get(i); 
        }
        return null;
    }
    public void AddVertex(Vertex V){
        Vertexes.add(V);
    }
}
public static void CreateGraph(File a , graph g) throws IOException{
    String st1 , st2 , line;
    Integer vs , es;
    try {
        BufferedReader br = new BufferedReader(new FileReader(a));
        st1 = br.readLine();
        st2 = br.readLine();
        vs = Integer.parseInt(st1);
        es = Integer.parseInt(st2);
        while ((line = br.readLine()) != null) {
            String[] splited = line.split("\\s+");
            //Vertex vTemp = null;
            Integer NameV = Integer.valueOf(splited[0]);
            System.out.println("line + " + line);
            //vTemp.name = NameV;
            Vertex vTemp = new Vertex(NameV);
            Integer AdjV = Integer.valueOf(splited[1]); 
            vTemp.adjs.add(AdjV);
            if(g.GetVertex(NameV) == null)
                g.AddVertex(vTemp);
            else
                g.GetVertex(NameV).adjs.add(AdjV);
            }
        System.out.println("vs  :  " + vs + "  es  "+ es);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
public static void main(String[] args) throws IOException {
    //try{
    File file = new File("/Users/mehran/Desktop/filee.txt");
    graph g = null;
    System.out.println("hi boy");
    CreateGraph(file , g);      
    //}catch(NullPointerException ee){;}
}
 }

我在CreateGraph这一行收到错误:Vertex vTemp = new Vertex(NameV); 我无法理解为什么,请解决它?

3 个答案:

答案 0 :(得分:0)

您尝试使用C ++ - 构造函数。 在Java中你必须写:

Vertex vTemp = new Vertex(NameV); // Class-names should start with a capital letter

答案 1 :(得分:0)

你在这里附带的代码为我编译好。我试图编译类value occurrence 3 3 1 2 2 2 4 1 5 1 并发现它没问题。

我认为当您尝试创建此类的对象时会出现问题。尝试创建像这样的Vertex对象 -

Vetex

答案 2 :(得分:0)

这里对您的代码进行了一些编辑(当然,您可以在方法中的任何位置实例化adj)

package test;

import java.util.ArrayList;

public class vertex {

    private Integer name ;

    public vertex(Integer na){ name = na;}

    public Integer getname(){
        return name;
    }

    public static void main(String[] args) {        
        ArrayList adjs = new ArrayList<Integer>();
    }
}

已编译的代码,但由于您没有添加主方法而无法运行