Java 需要帮助完成我的错误检查吗
我的任务是创建邮政条码转换器。我有一个工作程序,只有一个例外。我正在尝试执行的错误检查将条形码到数字的转换限制为:和|字符(因为程序需要将其转换回数字)。如果可能的话,我无法准确地理解我是如何将字符限制在这两个字符之间的,以任何不特定的顺序。我试过(!input.hasNext([:][|]);它没有给我带来任何我所想到的变化的运气。任何帮助都将不胜感激Java 需要帮助完成我的错误检查吗,java,Java,我的任务是创建邮政条码转换器。我有一个工作程序,只有一个例外。我正在尝试执行的错误检查将条形码到数字的转换限制为:和|字符(因为程序需要将其转换回数字)。如果可能的话,我无法准确地理解我是如何将字符限制在这两个字符之间的,以任何不特定的顺序。我试过(!input.hasNext([:][|]);它没有给我带来任何我所想到的变化的运气。任何帮助都将不胜感激 public static String number() { System.out.println("Enter a barcode
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;
}
可能您想做的是这样的:
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()
循环并继续正常执行。我相信您要查找的regexp是[|::]*
。这意味着“属于|
或:
之一的任意数量的字符”
如果输入中存在除空格以外的任何字符(不是条或冒号),则将拒绝该字符。空格或换行符将被视为令牌的结尾
如果要将输入限制为5个字符,应使用
[|::]{5}
。如果您至少需要5个字符,但不超过10个,则表达式为[|::]{5,10}
,如果您至少需要5个字符,但不关心长度有多长,则应使用[|::]{5,}
向程序显示一个示例输入,其中显示“良好”情况和“错误”情况以进行说明,是否希望程序在检测到“错误”字符后忽略所有内容,并将接收到的内容保留到该点(意思是我的字符串是:::::::|Q::|
,并且程序停止在Q
给出::::|
)。或者您只是想让它出错,而不管是否检测到不可接受的字符。while(!input.hasNext())
。。。幸运的是,您不会遇到异常,因为您使用的是System.in
作为源代码。我尝试了这一点,但它似乎陷入了循环中,无论我键入什么,我都重新格式化了它和所有内容。它只是继续循环,不管字母和数字的组合是什么,还有:“|”我放在里面的组合谢谢,这似乎限制了我正在寻找的代码生成。但是,是否有另一个嵌套的while循环,我可以在其中重复检查条形码的长度,以便在用户输入少量条形码时不会崩溃。任务要求5@JonathonP. 我编辑了答案以适应长度检查。太棒了!我让它功能齐全。非常感谢!没有那些花絮谁知道我会在哪里与该计划。再次感谢!我想投票,但上面说我需要15个声誉:(。