【问题标题】:I want to have the user input and print the average amount of letters used, and the longest name我想让用户输入并打印平均使用的字母数量和最长的名字
【发布时间】:2020-05-07 18:54:01
【问题描述】:

这是我的代码,我想打印一个新行,说明使用的平均字母数。而且我还想打印最长的名字写在..但我不能让它工作..有什么建议吗??

import java.util.*;
import java.util.stream.Collectors;

public class Program {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Write some names. When you are finished write <Avslutt>! :)");
        ArrayList<String> names = new ArrayList<String>();


        while (scanner.hasNextLine()) {
            String input = scanner.nextLine();
            if ("avslutt".equalsIgnoreCase(input)) {
                Collections.sort(names);
                System.out.println("Here is the result (Alphabetical): " + names);
                break;
            } else {
                names.add(input);
            }

        }


    }
}

【问题讨论】:

  • 另外,如果可能的话,在字符串中打印数组,而不需要 [test, test, test, test]
  • 您在哪里尝试打印平均字母数等等?它怎么不工作?
  • @user 更好的方法是String.join(", ", names)
  • @user 我打印“这里是结果”,我希望它也打印整个数组中的平均字母,以及用户写入的最长名称。
  • 首先你需要找到平均和最长的名字。 Stack Overflow 不是代码编写服务。向我们展示您的尝试,以及您遇到的问题。

标签: java arrays class if-statement printing


【解决方案1】:

您可以在非空行时循环输入,然后添加到列表中并求和以计算平均值。

使用 Comparater.comparing 按字符串长度对列表进行排序

 public static void main(String[] a) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Write some names. When you are finished write <Avslutt>! :)");
        List<String> names = new ArrayList<String>();
        int amount = 0;
        while (scanner.hasNextLine()) {
            String input = scanner.nextLine();
            if ("".equals(input)) {
                break;
            } else {
                names.add(input);
                amount += input.length();
            }

        }

        double avg = amount / names.size();
        Collections.sort(names, Comparator.comparing(n -> n.length()));
        System.out.println("Longest name: " + names.get(names.size() - 1));
        System.out.println("Average letter used:  + avg);
        scanner.close();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多