Удаление первой цифры из int, но с ведущими нулями - PullRequest
0 голосов
/ 19 ноября 2018

Мне нужно написать код для удаления первой цифры, если int больше 3 цифр. Например, если у меня есть 1055, то результат будет 055. Мой текущий код удаляет первую цифру, но проблема в том, что он также удаляет нули и выводит 55 вместо 055. Как бы я хотел это исправить? Переменная, на которую я ссылаюсь - это контрольная сумма

 int checksum = 0;
 int l = message.length();

 for (int i = 0; i < l; i++) { 3
   checksum += message.charAt(i);
 }
 if (checksum >= 1000) {
   checksum = Integer.parseInt(Integer.toString(checksum).substring(1));
 }
 physicalLayer.sendFrame("(" + message + ":" + checksum + ":.)");

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Вы упоминаете, что если оно больше 4 цифр, то

int number = 1055;

    String text_no = Integer.toString(number);
    //System.out.println(text_no.substring(1,3));
    if(text_no.length() > 4) {
        System.out.println(text_no.substring(1));
    }

Но «1055» имеет только 4 цифры, тогда, если условие не работает, если вам нужно проверить только 4 цифры и более, что для цифртогда это будет работать

int number = 1055;

        String text_no = Integer.toString(number);
        //System.out.println(text_no.substring(1,3));
        if(text_no.length() >= 4) {
            System.out.println(text_no.substring(1));
        }
0 голосов
/ 19 ноября 2018

Очевидно, что вы не можете держать ведущие нули в типе данных int.Итак, сохраните результат в String копии

int checksum=0;
int l= message.length();

for (int i = 0; i < l; i++) { 
checksum+= message.charAt(i);

}

String sChecksum = Integer.toString(checksum);
if(checksum>=1000){
sChecksum= sChecksum.substring(1);   

}


physicalLayer.sendFrame("("+message+":"+sChecksum+":.)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...