我有这个任务来创建一个邮政条形码转换器。我有一个工作程序有一个例外。我正在尝试进行错误检查,将条形码限制为数字转换为:和|字符(因为程序将其转换回数字是必需的)。如果可能的话,我无法确切地知道如何以任何非特定的顺序将字符限制为这两个字符。我试过了(!input.hasNext([:] [|]));它让我对任何我想到的变化都没有好运。任何帮助将不胜感激。
public static String number()
{
System.out.println("Enter a barcode with using : or | ");
Scanner input = new Scanner(System.in);
while (!input.hasNext())
{
System.out.println("Error: Please Input a correct number");
System.out.print("Entry: ");
input.next();
}
String input1 = input.next();
return input1;
}
答案 0 :(得分:0)
你想要做的事情可能是这样的:
Scanner input = new Scanner(System.in);
System.out.println("Enter a barcode with using : or | ");
String barcode = input.next(); // The barcode should not have white space, so don't use nextLine()
while (!barcode.contains("|") && !barcode.contains(":"))
{
System.out.println("Error: Please Input a correct number");
System.out.print("Entry: ");
input.next();
}
// Do whatever with the barcode
基本上,您想要提示用户输入一次条形码。需要验证输入以查看它是否包含“|”要么 ':'。如果输入不包含任何一个字符,则需要继续提示用户输入有效输入。一旦他们输入有效的输入,代码就会突破while()
循环并继续正常执行。
答案 1 :(得分:0)
我相信您正在寻找的正则表达式为[|:]*
。这意味着“任意数量的字符属于|
或:
”。
如果输入中除了空格之外还有任何字符,那不是条形或冒号,它将被拒绝。空格或换行符将被视为令牌的结尾。
如果要将输入限制为5个字符,则应使用[|:]{5}
。如果你想至少 5个字符,但不超过10个,那么表达式是[|:]{5,10}
,如果你想要至少5个字符,但你不在乎多长时间,你应该使用[|:]{5,}
。