Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在第二个java文件上使用导入不会';不允许访问其变量_Java_File_Class_Import - Fatal编程技术网

在第二个java文件上使用导入不会';不允许访问其变量

在第二个java文件上使用导入不会';不允许访问其变量,java,file,class,import,Java,File,Class,Import,我试图从主文件Prim.java访问Graph.java中第二个类Graph中的变量 我尝试了Graph.variable,并尝试执行以下操作: import Graph; 但这会收到一个错误,上面写着“预期” 下面是Prim.java import java.io.BufferedReader; import java.io.File; // Import the File class import java.io.FileNotFoundException; // Import thi

我试图从主文件Prim.java访问Graph.java中第二个类Graph中的变量

我尝试了Graph.variable,并尝试执行以下操作:

import Graph;
但这会收到一个错误,上面写着“预期”

下面是Prim.java

import java.io.BufferedReader;
import java.io.File;  // Import the File class
import java.io.FileNotFoundException;  // Import this class to handle errors
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Prim{
    
    int min(boolean [] mst, int [] weights){
            int minweights = Integer.MAX_VALUE;
            int vert = -1;
            
            for (int i = 0; i <Graph.v ; i++) { // here is the issue
                if(mst[i]==false && minweights>weights[i]){
                    minweights = weights[i];
                    vert = i;
                }
            }
            
            return vert;
            
    }
导入java.io.BufferedReader;
导入java.io.File;//导入文件类
导入java.io.FileNotFoundException;//导入此类以处理错误
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共类Prim{
最小整数(布尔值[]mst,整数[]权重){
int minweights=Integer.MAX_值;
int vert=-1;
对于(int i=0;i权重[i]){
最小重量=重量[i];
垂直=i;
}
}
返回垂直方向;
}
当然,文件还有更多内容,所以如果需要整个文件,我很乐意发布它

下面是整个Graph.java:

import java.io.BufferedReader;
import java.io.File;  // Import the File class
import java.io.FileNotFoundException;  // Import this class to handle errors
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Graph{
    

    public static class xGraph{
        public int v;
        public int m[][];

        public xGraph(int vert) {
            this.v = vert;
            m = new int[vert][vert];
        }

        public void edges(String start, String end, int weight) {   
            System.out.print("(" + start + ", " + end + ", " + weight + ") ");
            int numStart = convertToNum(start);
            int numEnd = convertToNum(end);
            m[numStart][numEnd]=weight;            
            m[numStart][numEnd] = weight;
            
        }
        
        
        public static int convertToNum(String s) {
            char ss = s.charAt(0);
            int num = 0;
            for (char a = 'a'; a <= 'z'; a++) {
                if (a == ss) {
                    
                    num = (a-'a');
                    
                }
            }
            
            return num;
        }
        
    }
    
}
导入java.io.BufferedReader;
导入java.io.File;//导入文件类
导入java.io.FileNotFoundException;//导入此类以处理错误
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共类图{
公共静态类xGraph{
公共INTV;
公共int m[][];
公共X图形(整数垂直){
这个。v=垂直;
m=新整数[vert][vert];
}
公共空边(字符串开始、字符串结束、整数权重){
系统输出打印(“+start+”、“+end+”、“+weight+”);
int numStart=convertToNum(启动);
int numEnd=转换器(结束);
m[numStart][nummend]=重量;
m[numStart][nummend]=重量;
}
公共静态整数转换(字符串s){
char ss=s.charAt(0);
int num=0;

对于(char a='a';a,如果:
两个类都在默认包中,则不必导入图形。
-两个类在同一个包中。
此外,在Prime类中使用静态内部类之前,必须像这样初始化静态内部类:

Graph.xGraph xgrph = new Graph.xGraph(10);
for (int i = 0; i <xgrph.v ; i++) { 
     //code
}

这是一个很好的信息。谢谢。它仍然不能识别Graph.v,尽管它在Prim中。我正在运行javac Prim.java Graph。javaI已经更新了答案哦,亲爱的。谢谢。我现在就开始。是否最好完全去掉xGraph类,把它的变量移到Graph中?我不明白。你是在要求
Graph、 v
,但没有这样的东西。
Graph
包含的唯一东西是
xGraph
,甚至那也只是一个类声明。
public class Test
{

    public static void main(String[] args) throws Exception
    {
        Graph grph = new xGraph(10);
        for (int i = 0; i <grph.getV() ; i++) { 
           //code
        }
    }
}

interface  Graph{

    public int getV();
    public int[][] getM();
    public void edges(String start, String end, int weight);
    
    //helper methods
    public static int convertToNum(String s) {
        char ss = s.charAt(0);
        int num = 0;
        for (char a = 'a'; a <= 'z'; a++) {
            if (a == ss) {
                num = (a-'a');
            }
        }
        return num;
    }
}

class xGraph implements Graph {
    private  int v;
    private int m[][];

    public xGraph(int vert) {
        this.v = vert;
        m = new int[vert][vert];
    }

    
    @Override
    public void edges(String start, String end, int weight) {
        System.out.print("(" + start + ", " + end + ", " + weight + ") ");
        int numStart = Graph.convertToNum(start);
        int numEnd = Graph.convertToNum(end);
        m[numStart][numEnd]=weight;            
        m[numStart][numEnd] = weight;
    }


    @Override
    public int getV() {
        return this.v;
    }


    @Override
    public int[][] getM() {
        return this.m;
    }
}