@Janna1603

Как написать программу «Максимальное значение»?

public class Main {

    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    ArrayList<String> myList = new ArrayList<>();
    System.out.println("Введите числа");
    while (true) {
        String number = input.next();
        System.out.println(number);
    if (number == "!") {
        break;
    }

        myList.add(number);
        System.out.println(myList);
    }

    }
}


Я пыталась написать программу, в которой сначала вводятся числа, после того как ввели "!", программа должна сравнить все числа и вывести самое большое. Я попробовала сначала хотя бы просто выйти из программы после "!", но не выходит... Помогите, пожалуйста
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 3
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Я и сам изучаю Java и хочу акцентировать ваше внимание на следующих пунктах:

Во-первых,
ArrayList<String> myList Вы создаете ArrayList с параметрированным типом данных String.

Отсюда возможны слудующие проблемы в дальнейшем:

1) Как убедиться, что пользователь введет именно число, а не слово. Если вы хотите использовать именно тип String, то стоит использовать также regexp и метод matches() и проверять на то, что пользователь ввел именно цифру или число.

2) Как сравнить числа, если они являются переменными типа String?
Разве, что нужно будет итерировать по списку и использовать Integer.parseInt(str) Ведь, сравнить строки вы не можете и вам придется привести строки к типу int.

3) if(number == "!")
Строки лучше сравнивать используя метод equals(). Вам не удается выйти из цикла именно из-за этого. используйте equals()

Наверное, лучше сразу принимать int используя sc.nextInt(), а из цикла выходить другим способом. Например, нажатием кнопки, которую вы назначите на выход из цикла. Например, добавив event listener для кнопки Enter и по нажатию кнопки выходите из цикла. А далее итерировать по списку и сравнить данные и выдать макс. значение
Ответ написан
Комментировать
@Ostic
Программист - любитель
int[] nums={6,-1,-2,-3,0,1,2,3,4};
Arrays.sort(nums);
System.out.println( "Minimum = " + nums[0] );
System.out.println( "Maximum = " + nums[nums. length-1] );
Ответ написан
Комментировать
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        List<Integer> myList = new ArrayList<>();
        while (true) {
            System.out.print("Введите число: ");
            String number = input.next();
            if (number.equals("!")) {   //Используйте IDE и не забивайте на её подсказки.
                                        // Хочу вам предложить перейти на Python или Kotlin.
                                        // По крайне мере на первое время там не будет возникать вопросов, "почему equals".
                break;
            } else {
                String trim = number.trim();//Убрать пробелы и прочее по бокам (можно и не использовать)
                int e = Integer.parseInt(trim); // Спарсить число
                myList.add(e);
            }
        }
        int max = max(myList);  // вместо самописной функции можно было бы использовать стримы, но так пока что проще.
                                // и опять же повод посмотреть в сторону Kotlin
        System.out.println(max);
    }

    private static int max(List<Integer> arr) {
        int max = Integer.MIN_VALUE;
        for (int i : arr) {
            if (i > max) max = i;
        }
        return max;
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы