在第二个java文件上使用导入不会';不允许访问其变量
我试图从主文件Prim.java访问Graph.java中第二个类Graph中的变量 我尝试了Graph.variable,并尝试执行以下操作:在第二个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
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;
}
}