Trad的传导函数(String Language,String Word)

时间:2014-02-26 08:55:19

标签: java split

我正在编写一个函数,当您单击“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(波兰语)。

有人可以帮忙吗?

1 个答案:

答案 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