Java 为什么这是一个;找不到符号“;错误
我正在完成我的项目,但一直遇到这个错误。我不明白,因为置换数据是另一个具有静态字符串[][]的类,我正在检查元素x[0]是否在置换数据中,但我的编译器一直将置换数据识别为变量而不是类。。。。我现在在我的旋翼班里 Rotor.java:90:错误:找不到符号Java 为什么这是一个;找不到符号“;错误,java,Java,我正在完成我的项目,但一直遇到这个错误。我不明白,因为置换数据是另一个具有静态字符串[][]的类,我正在检查元素x[0]是否在置换数据中,但我的编译器一直将置换数据识别为变量而不是类。。。。我现在在我的旋翼班里 Rotor.java:90:错误:找不到符号 for (String[] x : PermutationData.ROTOR_SPECS) { ^ symbol: variable PermutationData location: class Rot
for (String[] x : PermutationData.ROTOR_SPECS) {
^
symbol: variable PermutationData
location: class Rotor
if (type() == x[0]) {
Index1 = toIndex(x[1].charAt(p));
这是我的PermutationData.java类
class PermutationData {
/** The names and definitions of the rotors and reflectors in M4. The
* first string in each entry is the name of a rotor or reflector. The
* second is a 26-character string whose first character is the mapping
* (when the rotor is at the 'A' setting), of 'A' in the right-to-left
* direction, whose second is that of 'B', etc.
*
* The third entry, if present, is the inverse of the
* second---the left-to-right permutation of the rotor. It is
* not present for reflectors.
*
* The fourth entry, if present, gives the positions of the
* notches. These are the settings of the rotors just before the
* wheels advanced (wheels advance before a character is
* translated). Other written accounts of the Enigma generally
* show instead the character settings just after a character is
* coded (e.g., 'R', rather than 'Q', or 'A' rather than 'Z').
* The entry is absent in rotors that do not advance. */
static final String[][] ROTOR_SPECS = {
{ "I", "EKMFLGDQVZNTOWYHXUSPAIBRCJ", "UWYGADFPVZBECKMTHXSLRINQOJ",
"Q" },
{ "II", "AJDKSIRUXBLHWTMCQGZNPYFVOE", "AJPCZWRLFBDKOTYUQGENHXMIVS",
"E" },
{ "III", "BDFHJLCPRTXVZNYEIWGAKMUSQO", "TAGBPCSDQEUFVNZHYIXJWLRKOM",
"V" },
{ "IV", "ESOVPZJAYQUIRHXLNFTGKDCMWB", "HZWVARTNLGUPXQCEJMBSKDYOIF",
"J" },
{ "V", "VZBRGITYUPSDNHLXAWMJQOFECK", "QCYLXWENFTZOSMVJUDKGIARPHB",
"Z" },
{ "VI", "JPGVOUMFYQBENHZRDKASXLICTW", "SKXQLHCNWARVGMEBJPTYFDZUIO",
"ZM" },
{ "VII", "NZJHGRCXMYSWBOUFAIVLPEKQDT", "QMGYVPEDRCWTIANUXFKZOSLHJB",
"ZM" },
{ "VIII", "FKQHTLXOCBJSPDZRAMEWNIUYGV", "QJINSAYDVKBFRUHMCPLEWZTGXO",
"ZM" },
{ "BETA", "LEYJVCNIXWPBQMDRTAKZGFUHOS", "RLFOBVUXHDSANGYKMPZQWEJICT" },
{ "GAMMA", "FSOKANUERHMBTIYCWLQPZXVGJD", "ELPZHAXJNYDRKFCTSIBMGWQVOU" },
{ "B", "ENKQAUYWJICOPBLMDXZVFTHRGS" },
{ "C", "RDOBJNTKVEHMLFCWZAXGYIPSUQ" }
};
}如果
ROTOR\u SPECS
确实是一种方法,则应使用括号调用它:置换数据。ROTOR\u SPECS()
否则编译器会认为它是一个变量 如果
ROTOR\u SPECS
确实是一种方法,则应使用括号调用它:PermutationData.ROTOR\u SPECS()
否则编译器会认为它是一个变量 连同@alfasin的答案,确保您已导入置换数据连同@alfasin的答案,确保已导入PermutationData我认为PermutationData.java类具有默认级别的包访问权限,并且您正在从其他包调用它。由于此PermutationData.java类无法访问 请将可以解决您的问题的PermutationData.java公开 另一件事是肯定的,ROTOR_SPECS是String[][]类型的变量。因此,您可以首先将其存储在程序中的某个位置,并将其分配给其他变量,然后检查其存在性 试着运行这个,它正在工作
for (String[] x : PermutationData.ROTOR_SPECS) {
System.out.println(x[0]);
}
我认为您的PermutationData.java类具有默认级别的包访问权限,并且您正在从其他包调用它。由于此PermutationData.java类无法访问 请将可以解决您的问题的PermutationData.java公开 另一件事是肯定的,ROTOR_SPECS是String[][]类型的变量。因此,您可以首先将其存储在程序中的某个位置,并将其分配给其他变量,然后检查其存在性 试着运行这个,它正在工作
for (String[] x : PermutationData.ROTOR_SPECS) {
System.out.println(x[0]);
}
如果ROTOR_SPECS是一个方法,你不应该在它后面使用大括号吗?如果ROTOR_SPECS是一个方法,你不应该在它后面使用大括号吗?我如何将另一个类导入到这个类中,这取决于你遵循的包结构。如果在同一个包中同时有
Rotor
类和PermutationData
,则无需导入它。否则,如果您没有使用任何像Eclipse这样的IDE,请确保使用import语句手动导入它;所以我认为我没有必要进口任何东西。我不明白为什么编译器一直把排列数据识别为变量这是一个奇怪的类我该如何将另一个类导入这个类,这取决于你遵循的包结构。如果在同一个包中同时有Rotor
类和PermutationData
,则无需导入它。否则,如果您没有使用任何像Eclipse这样的IDE,请确保使用import语句手动导入它;所以我认为我没有必要进口任何东西。我不明白为什么编译器一直将置换数据识别为变量这是一个奇怪的类我这么做了,但现在eclipse是红线ROTOR_SPECS(),表示ROTOR_SPECS()方法不是为类型置换数据定义的如果置换数据
是一个类,而且ROTOR_SPECS
没有定义为静态方法-只有在创建类的实例后才能调用它!静态最终字符串[][]ROTOR_SPECS在您的问题中,您编写了“使用ROTOR_SPECS方法初始化”,现在您编写了它声明为静态变量。最好发布所有相关代码,以及从编译器中得到的错误是什么。另外,这两个类在同一个包中?如果没有-是否导入了类PermutationData
?我这样做了,但现在eclipse是红线ROTOR\u SPECS(),表示没有为类型PermutationDataIfPermutationData
定义ROTOR\u SPECS()方法,而且ROTOR_SPECS
没有定义为静态方法-只有在创建类的实例后才能调用它!静态最终字符串[][]ROTOR_SPECS在您的问题中,您编写了“使用ROTOR_SPECS方法初始化”,现在您编写了它声明为静态变量。最好发布所有相关代码,以及从编译器中得到的错误是什么。另外,这两个类在同一个包中?如果没有-是否导入了类排列数据
?