我想找出把字母转换成数字的方法,然后按照n位数来分割它。
例如,我有话要说:明天开始
然后,我把它转换成类似于ASCII的数字。因此,转换号必须是:8479777982827987326669717378
在此之后,所有的数字将转换为n位数,并将其放入一维数组中.
假设数字分裂成3位数,每个块。结果必须是:847 977 798 282 798 732 666 971 737 8
它们都在数组中:arr[0] = 847, arr[1] = 977, arr[2] = 798,....arr[n]
我已经试过用java来解决它了。但到目前为止,我可以将字符串转换为数字。
下面是我尝试过的代码的一部分:
String words = "TOMORROW BEGIN";
int sa;
char c;
for(int i = 0; i < words.length(); i++){
c = words.charAt(i);
sa = (int) c;
String kt = Integer.toString(sa);
System.out.print(kt);
}嗯,它成功地转换成了数字:8479777982827987326669717378
但是,我混淆了如何将数字拆分为n位数字块(假设每个块3位数字),然后将所有块的值放入数组中。
我该怎么做才能解决这个问题?
发布于 2014-04-17 09:24:07
您可以创建这样的方法:
public static int[] splitString(String str, int length){
int size=str.length()/length;
if( str.length() % length != 0)
size++;
int[] arr = new int[size];
int a=0;
for (int i= 0; i < str.length(); i+=length) {
if(i+length < str.length())
arr[a++]=Integer.parseInt(str.substring(i, i+length));
else
arr[a++]=Integer.parseInt(str.substring(i, str.length()));
}
return arr;
}在您的主要方法中,只需调用:
String str = "8479777982827987326669717378";
System.out.println(Arrays.toString(splitString(str,3)));输出:
[847, 977, 798, 282, 798, 732, 666, 971, 737, 8]您甚至可以指定将2位数字int存储到数组中。
System.out.println(Arrays.toString(splitString(str, 2)));输出:
[84, 79, 77, 79, 82, 82, 79, 87, 32, 66, 69, 71, 73, 78]发布于 2014-04-17 08:52:18
一种解决方案是每三个字符使用substring,并使用Integer.parseInt()将每个子字符串转换回来。
public class Main {
public static void main(String[] args) {
String input = "8479777982827987326669717378";
int n = 3;
int[] output = new int[(input.length() + n - 1) / n];
for (int i = 0; i < output.length; i++) {
output[i] = Integer.parseInt(input.substring(i*n, Math.min((i+1)*n, input.length())));
// System.out.println(output[i]);
}
}
}发布于 2014-04-17 08:55:35
可以使用子字符串方法拆分字符串。
例:
for (int start = 0; start < kt.length(); start += size) {
system.out.println(kt.substring(start, Math.min(kt.length(), start + size)))
}https://stackoverflow.com/questions/23128524
复制相似问题