Массив символов Java для int - PullRequest
       3

Массив символов Java для int

12 голосов
/ 21 апреля 2010

Можно ли преобразовать массив char[], содержащий числа, в int?

Ответы [ 7 ]

21 голосов
/ 21 апреля 2010

Содержит ли char[] символы Юникода, составляющие цифры номера? В этом случае просто создайте строку из char[] и используйте Integer.parseInt:

char[] digits = { '1', '2', '3' };
int number = Integer.parseInt(new String(digits));
10 голосов
/ 06 сентября 2012

Еще больше производительности и более чистого кода (и нет необходимости выделять новый объект String):

int charArrayToInt(char []data,int start,int end) throws NumberFormatException
{
    int result = 0;
    for (int i = start; i < end; i++)
    {
        int digit = (int)data[i] - (int)'0';
        if ((digit < 0) || (digit > 9)) throw new NumberFormatException();
        result *= 10;
        result += digit;
    }
    return result;
}
7 голосов
/ 21 декабря 2012
char[] digits = { '0', '1', '2' };
int number = Integer.parseInt(String.valueOf(digits));

Это также работает.

2 голосов
/ 09 июля 2018

Можно преобразовать массив char[], содержащий числа, в int. Вы можете использовать следующую другую реализацию для преобразования массива.

  1. Использование Integer.parseInt

    public static int charArrayToInteger(char[] array){
        String arr = new String(array);
        int number = Integer.parseInt(arr);
    
        return number;
    }
    
  2. Без Integer.parseInt

    public static int charArrayToInt(char[] array){
        int result = 0;
        int length = array.length - 1;
    
        for (int i = 0; i <= length; i++)
        {
             int digit = array[i] - '0'; //we don't want to cast by using (int)
             result *= 10;
             result += digit;
        }
        return result;
    }
    

Пример:

 public static void main(String []args){
    char[] array = {'1', '2', '3', '4', '5'};
    int result = 0;

    result = charArrayToInteger(array);
    System.out.println("Using Integer.parseInt: " + result);

    result = charArrayToInt(array);
    System.out.println("Without Integer.parseInt: " + result);

 }

Выход:

Using Integer.parseInt: 12345
Without Integer.parseInt: 12345
1 голос
/ 14 мая 2012

Другой способ с большей производительностью:

char[] digits = { '1', '2', '3' };

int result = 0;
for (int i = 0; i < chars.length; i++) {
   int digit = ((int)chars[i] & 0xF);
   for (int j = 0; j < chars.length-1-i; j++) {
        digit *= 10;
   }
   result += digit;
}
0 голосов
/ 28 декабря 2015

Ну, вы можете попробовать даже это

    char c[] = {'1','2','3'};
    int total=0,x=0,m=1;
    for(int i=c.length-1;i>=0;i--)
    {
        x = c[i] - '0';
        x = x*m;
        m *= 10;
        total += x;
    }
    System.out.println("Integer is " + total);
0 голосов
/ 12 июля 2013

Вы можете использовать это для получения одного за другим int

char[] chars = { '0', '1', '2' };
int y=0;
for (int i = 0; i < chars.length; i++) {
    y = Integer.parseInt(String.valueOf(chars[i]));
    System.out.println(y);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...