• Пользователь вводит строку с числами. Напишите программу
    которая выведет все числа, присутствующие в строке, а также выведет
    максимальное и минимальное число. Числом является любая
    последовательность цифр. Если между двумя числами находится знак
    математической операции – результатом будет результат вычисления
    математической операции.
    Пример:
    Если дана строка: 123_2*14ghfg003sad15/2dasdasd8.10

    Программа должна вывести:
    Numbers:
    123
    28
    3
    7
    8
    10
    Max: 123
    Min: 3
    На Java.

Ответы 1

  • import java.util.*;import java.util.regex.*;import java.lang.*;import java.io.*;class IntInStr{ public static void main (String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String string; string = br.readLine(); String[] parts = string.split("[^\\d+\\-*/]+"); Vector<Integer> nums = new Vector<Integer>(); for(String part : parts) { Matcher isnum = Pattern.compile("^\\d+$").matcher(part); Matcher isnumop = Pattern.compile("^(\\d+)([+*/-])(\\d+)$").matcher(part); if (isnum.matches()) { int ipart = Integer.parseInt(part); nums.add(ipart); } if (isnumop.matches()) { int l = Integer.parseInt(isnumop.group(1)), r = Integer.parseInt(isnumop.group(3)), res; String operation = isnumop.group(2); switch(operation) { case "+": res = l + r; break; case "-": res = l - r; break; case "*": res = l * r; break; case "/": res = l / r; break; default: throw new ArithmeticException("token parse error"); } nums.add(res); } } int min = nums.get(0), max = nums.get(0); System.out.println("Numbers:"); for (int n : nums) { System.out.println(n); if (n > max) { max = n; } if (n < min) { min = n; } } System.out.format("Max: %d%nMin: %d%n", max, min); } catch(Exception e) { System.out.println(e.getMessage()); } }}
    • Автор:

      grady834
    • 4 года назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years