将整数中的数字分开(用户输入)

时间:2012-05-24 23:38:03

标签: java

如何输入像'23423'这样的数字并将其输出为'2 3 4 2 3'?如何使用户无法输入少于或超过5位数? (我的帮助将不胜感激。自从我学习Java以来​​,我只需要你们的提示。期待学习新知识。)

这是我到目前为止所做的:

    Scanner input = new Scanner(System.in);

    int value1, value2, value3, value4, value5;

    System.out.print("Enter a number: ");
    value1 = input.nextInt();

    System.out.print("Enter a number: ");
    value2 = input.nextInt();

    System.out.print("Enter a number: ");
    value3 = input.nextInt();

    System.out.print("Enter a number: ");
    value4 = input.nextInt();

    System.out.print("Enter a number: ");
    value5 = input.nextInt();

    System.out.printf(" %d " + " %d " + " %d " + " %d " + " %d\n ", value1, value2, value3, value4, value5);

3 个答案:

答案 0 :(得分:3)

可以使用循环重做:使循环读取输入5次,并且每次将第i个读取值放在数组的第i个位置。

然后,要打印它,您只需使用打印数组中每个元素的for循环。

答案 1 :(得分:2)

如果您真的希望他们输入一个5位数的数字,您将不得不对用户输入进行验证,如果输入无效则会出错。如果要求是5位数字的第一个数字永远不应为零,你可以得到一个int,然后检查它是否大于9999且小于100000.否则将它作为一个字符串并检查长度,一旦你验证了它就把它变成一个整数。

答案 2 :(得分:0)

最合适的解决方案在我看来是一个while循环,你可以在其中构建一个字符串并添加一个空格。在while处理之后,你应该消除最后的空格。以下内容应符合您的需求。我使用过apache commons项目,但你也使用自己的类。

    Scanner scanner = new Scanner(System.in);

    String str = "";
    while (scanner.hasNext()) {
        String next = scanner.next();
        if (next.equals("E")) {
            break;
        }

        if (NumberUtils.isNumber(next)) {
            for (int i = 0; i < next.length(); i++) {
                str += Integer.valueOf(next.substring(i, i + 1)) + " ";
            }
        }
    }
    str = str.substring(0, str.length() - 1);

    System.out.println("your number: " + str);  

使用“E”可以退出循环。