Количество цифр и какие цифры это целое число - PullRequest
0 голосов
/ 14 июля 2011

Пример int i=185;

Тогда я хочу получить, что 'i' содержит 3 цифры, а эти цифры 1,8 и 5.

Ответы [ 5 ]

8 голосов
/ 14 июля 2011

Подсказка: Вам нужно взять модуль числа на 10, чтобы получить последнюю цифру. А затем разделите то же число на 10, получите первые два числа. Повторите себя столько раз, сколько требуется.

3 голосов
/ 14 июля 2011

1-й раствор:

/**
 * Using Integer/String classes functionality
 */
public class Shweta {

    private static Integer i = 185;

    public static void main(String... args) {
        String iStr = i.toString();
        for (char digit : iStr.toCharArray()) {
            System.out.println(digit);
        }
        System.out.println("Length is: " + iStr.length());
    }

}

2-й раствор:

/**
 * Doing that in a 'homework' way
 */
public class ShwetaNoCheats {

    private static Integer i = 185;

    public static void main(String... args) {
        int length = 0;
        while (i != 0) {
            System.out.println(i - (i / 10) * 10);
            i /= 10;
            length++;
        }
        System.out.println("Length is: " + length);
    }
}
2 голосов
/ 14 июля 2011

Простой способ сделать это - преобразовать строку в независимую от локали строку, а затем посмотреть на каждый символ в строке.Я не даю окончательного решения, если это домашняя работа, но вот некоторые важные API ...

Преобразование в строку:

String stringForm = Integer.toString(number);

Обработка негативов:

int nonNegative = Math.abs(number);

Длина строки:

int length = stringForm.length();

Получение i-го символа строки:

char c = stringForm.charAt(i);
0 голосов
/ 14 июля 2011

Число десятичных цифр также задается Math.ceil (Math.log10 (i)) для целых чисел i.

0 голосов
/ 14 июля 2011

Один из способов будет:

int i = 185;

int a = i / 100;         // 1
int b = (i % 100) / 10;  // 8
int c = i % 10;          // 5 

Но я думаю, что вам нужно что-то более общее?Попробуйте через строку

int i = 185;
String iAsString = String.format("%d", i);

if(iAsString.contains("1")){
   // do something...
}

И более продвинутые:

    int i = 185;
    String iAsString = String.format("%d", i);

    HashSet<Integer> set = new HashSet<Integer>();
    for(char c : iAsString.toCharArray()){
        set.add(Integer.valueOf(String.valueOf(c)));
    }

Тогда вы сможете работать на съемочной площадке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...