繁体   English   中英

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

[英]Java switch statement not working, even 'default' isn't

我的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 ,因为我需要扫描可能存在超过3000个字符的qr字符串。

问题在这里。

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

这与

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

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

例如:

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

它的返回值是一个像

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

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

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

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

您应该使用split("\\\\|")如果想通过拆分| ; split("\\\\|\\\\|")如果要用||分割

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM