我的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个字符。
答案 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)
如果使用拆分功能,则需要牢记以下几点。此功能不起作用,因为它是拆分输入。