Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要帮助完成我的错误检查吗_Java - Fatal编程技术网

Java 需要帮助完成我的错误检查吗

Java 需要帮助完成我的错误检查吗,java,Java,我的任务是创建邮政条码转换器。我有一个工作程序,只有一个例外。我正在尝试执行的错误检查将条形码到数字的转换限制为:和|字符(因为程序需要将其转换回数字)。如果可能的话,我无法准确地理解我是如何将字符限制在这两个字符之间的,以任何不特定的顺序。我试过(!input.hasNext([:][|]);它没有给我带来任何我所想到的变化的运气。任何帮助都将不胜感激 public static String number() { System.out.println("Enter a barcode

我的任务是创建邮政条码转换器。我有一个工作程序,只有一个例外。我正在尝试执行的错误检查将条形码到数字的转换限制为:和|字符(因为程序需要将其转换回数字)。如果可能的话,我无法准确地理解我是如何将字符限制在这两个字符之间的,以任何不特定的顺序。我试过(!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;
}

可能您想做的是这样的:

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个声誉:(。