2013-07-19 29 views
-1

例如,假设用户输入:2314.将每个数字放在数组的自己的字段中的最快方法是什么?如何隔离int中的每个数字并将其放入数组中?

我试图转换成一个字符串,然后隔离每个数字作为字符,但我不知道如何将它从一个字符转换为一个int。

+0

一些事情“这是自己的领域数组中”的意思? – rahulserver

+0

显示你的努力之前问题将被关闭.. – Maroun

+0

我已经尝试转换成一个字符串,然后隔离每个数字作为字符,但我不知道如何将它从一个字符转换为一个int。 – entropy

回答

4
  1. 您可以将您的号码转换为字符串。
  2. 然后使用String#toCharArray()方法将字符串转换为char数组。
  3. 创建大小等于char数组的int[]
  4. 迭代char数组,并将每个字符转换为int,并将其放入整数数组中。

记住,转换到charint棘手。你不能只是做一个typecast。那会给你ASCII码的编号。您可以使用下面的代码转换从charint

char ch = '3'; 
int chToInt = ch - '0'; 

另一种方法是使用一个ArrayList。并做整数除法模数操作,得到每个单独的数字,并将其加到ArrayList

2314/1000 = 2  // First digit (add to ArrayList) 
2314 % 1000 = 314 // This is the new number 

314/100 = 3 // Add this to ArrayList 
314 % 100 = 14 // This is the new number 

// Proceed like this 

您需要找到一种方法来编写上述步骤的loop

+0

通过字符'0'减法有什么作用? – entropy

+0

@ user2396852。 ''2' - '0',将会减去两个字符的ASCII码。差别将是'2'。 –

+0

太棒了,谢谢:) – entropy

2
int number = 1234; 
int array[] = new int[String.valueOf(number).length()]; 
for (int i = 0; number > 0; i++) { 
    array[i] = number % 10; 
    number = number/10; 
} 
0

打印整数按相反的顺序(LSB到MSB)

while(a > 0) 
{ 
    arr[i] = a%10; 
    a = a/10; 
} 
0

试试这个:

int[] nums = new int[input.length]; 
int i = 0; 
for (String c : input.split("(?<=.)") 
    nums[i++] = Integer.parseInt(c); 

分裂正则表达式的关键是:这是一个 “向后看” 的任何字符,在每个字符后都会导致分裂。

如果您简单地将其分割为空白,即str.split(""),则结果数组的第一个元素中有空白。

+0

我猜〜OP想填充一个int数组。顺便说一句,感谢留下我关于str#split(“”),它在索引0处产生一个空字符串。:) – PermGenError

0

尝试这样

String str="2314"; 
    int[] arr=new int[str.length()]; 
    for(int i=0;i<arr.length;i++){ 
    arr[i]=Integer.parseInt(str.substring(i,i+1)); 
    } 
相关问题