Решаю задачу на java

Решаю следующую задачу. Реализовать программу на Java, которая для последовательности чисел, оканчивающихся на -1 выведет самую минимальную цифру, встречающуюся среди чисел последовательности.

Например:

345 298 456

Ответ: 2

Создал 2 варианта, но оба не работают. Я понимаю, что вводимые числа нужно разбить на цифры и только после этого определять минимум среди них. Но не знаю как реализовать. Вариант 1:

import java.util.Scanner;

public class homework05 {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int number = scn.nextInt();
        int min = 0;
        do {
            number = scn.nextInt();

            int digit1 = number / 100;
            int digit2 = (number % 100)/10;
            int digit3 = number % 10;

            if (digit1 < digit2 && digit1 < digit3 && digit1 > -1){
                min = digit1;
            }
            if (digit2 < digit1 && digit2 < digit3  && digit2 > -1){
                min = digit2;
            }
            if (digit3 < digit1 && digit3 < digit2 && digit3 > -1){
                min = digit3;
            }

        }while (number != -1);
        System.out.println(min);

    }
    }

Вариант 2:

import java.util.Scanner;

public class homework05 {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int number = scn.nextInt();
        int min = 0;
        while (number != -1) {
            int num = scn.nextInt();
            int digit1 = num / 100;
            int digit2 = (num % 100) / 10;
            int digit3 = num % 10;

            while (num != -1) {
                if (digit1 < digit2 && digit1 < digit3 && digit1 > -1) {
                    min = digit1;
                }
                if (digit2 < digit1 && digit2 < digit3 && digit2 > -1) {
                    min = digit2;
                }
                if (digit3 < digit1 && digit3 < digit2 && digit3 > -1) {
                    min = digit3;
                }
            }

            System.out.println(min);

        }
    }
}

Ответы (2 шт):

Автор решения: стасевич

пишем в гугле число в массив java, третья ссылка в поиске ведёт на https://ru.stackoverflow.com/questions/1058001/Запись-цифр-числа-в-массив
выбираем понравившийся алгоритм (ну или тот который понятен) сохраняем или запоминаем.
потом ищем алгоритм поиска - минимальное число в массиве java первая ссылка ведёт на https://ru.stackoverflow.com/questions/887073/Как-найти-минимальное-значение-в-массиве-в-java выбираем понравившийся алгоритм (ну или тот который понятен) сохраняем или запоминаем.

затем создаём статик метод куда всё впихиеваем

static int minFromNumber(int number) {
   

 int[] arr = new int[String.valueOf(number).length()]; 

    for (int i = 0; i < arr.length; ++i) {
        arr[i] += number % 10;
        number /= 10;
    }

    int min = arr[0];
    for (int num : arr) {

        if (min > num) {
            min = num;
        }
    }
    return min;
}

проверяем на числе 345 298 456
вывод - 2
контрольная проверка, меням какую-нибудь цифру на 1, затем на 0. вроде работает...

ну вот и думаем, вызываем метод либо его содержимое копируем в класс.

как-то так.

либо следуем совету tym32167, и по выше описанным аглоритмам ищем как считывать не числа, а строки и искать в строке минимальный символ.

→ Ссылка
Автор решения: Alex Rudenko

Существующий код жёстко привязан к трёхзначным числам, чего можно спокойно избежать, считывая числа во внешнем цикле, и обрабатывая каждое число во вложенном цикле. Также при нахождении минимальной цифры 0 можно досрочно заканчивать поиски, выходя из вложенного цикла с помощью break out, где out: - метка:

Scanner scn = new Scanner(System.in);
int min = 10; // на случай пустой последовательности ввода

int number;

out:          // метка досрочного выхода 
while ((number = scn.nextInt()) != -1) {
    if (number == 0) { // проверить на 0 при вводе
        min = 0;
        break;
    }

    while (number > 0) {
        int digit = number % 10;
        if (digit < min) {
            min = digit;
            if (min == 0) { // проверить на 0 внутри числа
                break out;
            }
        }
        number /= 10;
    } // проверка числа закончена
} // ввод чисел закончен

if (min < 10) {
    System.out.println("Минимальная цифра: " + min);
} else {
    System.out.println("Минимальная цифра не обнаружена"); // сразу ввели -1
}
→ Ссылка