Я пытаюсь получить последние три цифры типа int, значение которого может быть больше 999 в формате строки или int.
Например, если бы я получил int 12345678, я бы получил значение 678.
В настоящее время я могу удовлетворить это только для int, которые состоят из 4 цифр, например 1899.
С использованием String.valueOf (numberReceived) .substring (1);
Предположим, ваша строка состоит из 5 символов, что нужно передать в подстроку? А если это 6 знаков? А 7? Разве вы не видите довольно простую связь между количеством символов и значением, передаваемым в подстроку? Что-то связанное с числом 3? Это простая арифметика, ничего особенного.




Оператор по модулю (%) позволяет получить остаток от деления. В вашем случае вам нужны последние три цифры, поэтому вам нужно будет использовать % 1000 для получения правильного остатка.
Например, 2500 / 1000 = 2. Остаток 500. 2500 % 1000 = 500
public static int lastThreeDigits(int i) {
return i % 1000;
}
Важно отметить, что результирующий int не обязательно будет иметь три цифры. Например. 2039 даст вам 39, а не 039.
Чтобы убедиться, что у вас есть три цифры, вам нужно преобразовать результат в строку. Например. String.format("%03d", i)
Если ваш исходный номер имеет формат String и вы хотите получить последние 3 символа, вы можете использовать строковые операции вместо арифметических действий. Например, вот более общая функция для получения количества символов из конца строки:
public static String lastNChars(int n, String s) {
return s.substring(Math.max(0, s.length() - n));
}
Есть множество разных способов написать это в зависимости от того, что вы хотите.
Вы можете найти количество цифр в numberReceived и получить последние 3 цифры, используя метод подстроки:
String.valueOf(numberReceived).substring(String.valueOf(numberReceived).length()-3);
Разделите остаток от этого числа на 100:
numberReceived % 1000.