多行整数一行而不使用数组?

时间:2015-02-27 08:29:05

标签: java.util.scanner

嘿伙计们我不确定答案是否存在,我不太清楚如何描述我的问题。我在这里看了大约45分钟,找不到太多可以回答我的问题。如果它已经在其他地方发布,我很抱歉。

我需要能够在一行中输入一系列数字,并且只需要6到10的数字,并找到6到10之间的数字的平均值和最大值。

示例:4 5 6 6 7 7 7 8 8 8 8 9 9 9 并且:8 6 3 10

问题在于,如果您希望接收X输入数量,我找到了答案,但我正在进行的任务将在一条线路上输入类似1到20个数字的任何地方。

我不能将Array用于我的任务,我希望我能这样做,因为它会让事情变得更容易。我完全迷失了该怎么做。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您的输入是一个空格为分隔符的字符串,您可以执行类似这样的操作

String string = "4 5 6 6 7 7 7 8 8 8 8 9 9 9";
List<String> splittedStrings = Arrays.asList(string.split(" "));

之后你有一个带有分割输入的List,你可以用你想象的任何方式处理它(比如删除不需要的条目并将它们相加)。

<强>更新

即使没有数组或列表,这样的东西也应该有效:

    String string = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20";
    string = string.replaceAll("16|17|17|18|19|20|[1-5](?!0)", "").trim();
    System.out.println(string);
    int counter = 0;
    int value = 0;
    int max = 0;
    while (!string.isEmpty()) {
        String substring = "";
        if (string.indexOf(" ") == -1) {
            substring = string;
            string = "";
        } else {
            substring = string.substring(0, string.indexOf(" "));
            string = string.substring(string.indexOf(" ")).trim();
        }
        if (!substring.isEmpty()) {
            int integer = Integer.valueOf(substring).intValue();
            if (integer > max) {
                max = integer;
            }
            value = value + integer;
            counter++;
        }
    }
    System.out.println("Max: " + max + "; Average: " + Double.valueOf(value) / counter);