Java switch语句不起作用,即使“默认”也不起作用

时间:2018-08-24 06:44:23

标签: java android switch-statement

我的switch语句无法正常工作。

我从未在Java中使用过switch,而且我不知道自己做错了什么。它也没有执行default。我查询了有关switch语句的一些信息,我认为可能是因为以下这一行:

if (pair.length == 2) {
    // Voorbeeld van het gebruik van de key/value pairs
    switch (pair[0]) {

因为我查找的内容看起来像每个人都在pair[0]位置使用变量一样。

提前谢谢!

String scanString = result.getText(); // result.getText();
String[] parts = scanString.split("\\||");

// Loop alle delen tussen | langs
for (String part : parts) {
    String[] pair = part.split("\\|"); // Bevat de key en value pair voor en na het streepje

    if (pair.length == 2) {
        // Voorbeeld van het gebruik van de key/value pairs
        switch (pair[0]) {
        case "po":
            System.out.println("Productieorder: " + pair[1]);
            edt2.setText(pair[1]);
            break;
        case "tnr":
            System.out.println("Tekeningnummer: " + pair[1]);
            break;
        case "ref":
            System.out.println("Referentie: " + pair[1]);
            break;
        case "hafa":
            System.out.println("Half Fabrikaat: " + pair[1]);
            break;
        case "art":
            System.out.println("Artikel: " + pair[1]);
            break;
        case "atl":
            System.out.println("Aantal: " + pair[1]);
            break;
        case "loc":
            System.out.println("Locatie: " + pair[1]);
            edt4.setText(pair[1]);
            break;
        default:
            System.out.println("NIET GELUKT");
        }
    }
}

编辑

我将尝试以下操作:if (pair.length > 2)而不是== 2,我完全不知道为什么是== 2,因为我需要扫描可能存在的qr字符串超过3000个字符。

4 个答案:

答案 0 :(得分:2)

问题在这里。

String[] parts = scanString.split("\\||");

没有区别
String[] parts = scanString.split("");

它将拆分字符串的每个字母。

例如:

"Hello".split("\\||")

它的返回值是一个像这样的数组

["H","e","l","l","o"]

如果要将字符串分割为两个| ,您应该输入:

String[] parts = scanString.split("\\|\\|")

答案 1 :(得分:1)

问题出在String []部分= scanString.split(“ \ ||”); 和String []对= part.split(“ \ |”);其中按字符分割字符串。 条件if(pair.length == 2)正在检查大小2而返回false,因此控件不会进入切换块。 您可以安装断点并对其进行调试。

答案 2 :(得分:1)

如果要除以split("\\|"),则应使用|split("\\|\\|"),如果想除以||

否则,没有正则表达式转义|的第二个\将为OR,因此该字符串也会在空字符串上拆分,从而给出仅包含一个字母的字符串数组(尽管不是{ {1}}。

答案 3 :(得分:0)

如果使用拆分功能,则需要牢记以下几点。此功能不起作用,因为它是拆分输入。

  1. 一个字符字符串,此字符不是RegEx的元字符之一。“。$ |()[{^?* + \”
    1. two-char字符串,第一个字符是反斜杠,第二个字符不是ASCII数字或ASCII字母