Java char数组为int

是否可以将包含数字的char[]数组转换为int

char[]是否包含构成数字数字的unicode字符? 在这种情况下,只需从char[]创建一个String并使用Integer.parseInt:

 char[] digits = { '1', '2', '3' }; int number = Integer.parseInt(new String(digits)); 

更高性能和更清晰的代码(并且不需要分配新的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; } 
 char[] digits = { '0', '1', '2' }; int number = Integer.parseInt(String.valueOf(digits)); 

这也有效。

提高性能的另一种方式:

 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; } 

可以将包含数字的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 

您可以像这样使用逐个获取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); } 

好吧,你甚至可以试试这个

  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);