Java: разделить последнюю цифру от остальной части INT - PullRequest
2 голосов
/ 09 ноября 2010

У меня есть следующий код, который получает число, мне нужно разделить это число на части, firstPart должен быть целым числом без последней цифры, а secondPart должен быть только последней цифрой исходного числа.

public Boolean verificationNumberFiscalId(String fiscalId) {

        // Trying to do a better wa yto do it
        Integer firstPart = fiscalId.length()-1;
        Integer secondPart = ??????????;



        // My old logic
        String NitValue = "";
        for (Integer i = 0; i < fiscalId.length()-1; i++) {
            NitValue = fiscalId.substring(i,1);
        }

        Integer actualValueLength = fiscalId.length()-1;        
        String digitoVerificador = fiscalId.substring(actualValueLength,1);
        return this.generateDigitoVerification(NitValue) == digitoVerificador;
    }
    /** 
     * @param nit
     * @return digitoVerificador
     * @comment: Does the math logic
     */
    public String generateDigitoVerification(String nit) {        
        Integer[] nums = { 3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71 };

        Integer sum = 0;

        String str = String.valueOf(nit);
        for (Integer i = str.length() - 1, j=0; i >= 0; i--, j++) {
            sum += Character.digit(str.charAt(i), 10) * nums[j];
        }

        Integer dv = (sum % 11) > 1 ? (11 - (sum % 11)) : (sum % 11);
        return dv.toString();
    }

Не могли бы вы предложить мне лучший способ сделать это, пожалуйста?Спасибо!

Ответы [ 3 ]

11 голосов
/ 09 ноября 2010
int x = 1343248724;
int firstpart = x/10;
int secondpart = x%10;

System.out.println(firstpart);
System.out.println(secondpart);

Mod (%) дает вам остаток, который будет последней цифрой, если вы модифицируете 10 Divide, выпадет последняя цифра.Таким образом, вам не нужно искать строку.

Выполнение всех длинных вещей кажется мне немного излишним

о, и чтобы получить ваш параметр как int, я бы использовал

Interger.decode(fiscalId);
2 голосов
/ 09 ноября 2010

Вот как вы можете получить целые числа:

Integer firstPart = Integer.valueOf(
                        fiscalId.substring(0,fiscalId.length()-1));
Integer secondPart = Integer.valueOf(
                        fiscalId.substring(fiscalId.length()-1));

но я бы предложил вместо этого получить целые:

int firstPart = Integer.parseInt(fiscalId.substring(0,fiscalId.length()-1));
int secondPart = Integer.parseInt(fiscalId.substring(fiscalId.length()-1));
0 голосов
/ 09 ноября 2010
  1. Преобразование вашего числа в строку.Используйте String.valueOf()
  2. Разделите эту строку на две строки.Сначала посмотрите на длину оригинальной строки.Для длины n используйте ее подстроку (0, n-1) в качестве первой новой строки.Используйте последний символ (n) для второй строки
  3. Используйте Integer.valueOf() для преобразования обеих строк обратно в целые числа.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...