我正在编写一个函数,当您单击“FR”按钮时,它将翻译法语中jlabel的所有文本,并且当您单击英语中的“En”时。
输入.txt
Bon de Commande;Order Form
S'identifier;Login
Entrez votre identifiant;Enter Username
Entrez votre mot de passe;Enter Password
Connexion;Connection
Bienvenue;Welcome
的java
public static String getTraduction(String language, String word) throws IOException {
String delim = ";";
String line = null;
int size = getNbrLigne(PathLangue);
String[][] info = new String[size][0]; //String[FR][EN][NL]
String[] temp;
int a = 0;
int b = 0;
Scanner scanner = new Scanner(new File(PathLangue));
while (scanner.hasNextLine()) {
line = scanner.nextLine();
temp = line.split(delim);
System.out.println("temp : " + line);
info[b][a] = temp[a]; //info[0][0] -> FR
info[b][a] = temp[a+1]; //info[0][1] -> EN
//info[b][a] = temp[a+2]; // info[0][2] -> NL
System.out.println("FR : "+temp[a]+" EN : "+temp[a+1]);
if (temp[a].equals(word) == true){
if (language.equals("FR")) {
(info[b][a]) = temp[a];
break;
}
if (language.equals("EN")) {
(info[b][a+1]) = temp[a+1];
break;
}
/*if (langue.equals("NL")) {
(info[b][a+2]) = temp[a+2];
break;
}*/
}
b++;
}
scanner.close();
return info[b][a];
}
这段代码的问题是当我进行拆分时,我得到了:
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0
第一个sysout工作但不是第二个,因为错误是在我进行拆分时生成的:/
在我的最终版本中,我想整合FR,EN,NL(荷兰),DE(荷兰语)和PL(波兰语)。
有人可以帮忙吗?
答案 0 :(得分:4)
问题在于这一行:
String[][] info = new String[size][0]
第二个维度为空,因此当您访问info[b][a]
时,您将获得异常,因为第二个维度将始终超出范围。
您需要做的是使用第二维所需的大小初始化数组,例如:
String[][] info = new String[size][2]; // As in your case you access indicies 0 and 1 in the 2nd dimension