Я хочу, чтобы пользователь вводил и печатал среднее количество используемых букв и самое длинное имя - PullRequest
0 голосов
/ 07 мая 2020

Итак, это мой код, и я хочу распечатать новую строку с указанием среднего количества используемых букв. И я также хочу напечатать самое длинное имя, написанное .. но я не могу заставить его работать .. Любые предложения ??

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);
            }

        }


    }
}

1 Ответ

1 голос
/ 07 мая 2020

Вы можете l oop поверх ввода, пока не пустая строка, затем добавить в список и суммировать сумму для вычисления среднего.

Для сортировки списка с помощью Comparater.com сравнение по длине строки

 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();
    }

...