我想将String lotto int转换为整数数组。 字符串乐透由1到99之间的一定数量的数字组成,并且仅由1和2位数字组成。 (例如:字符串乐透可能看起来像“1 34 5 23 7 89 32 4 10 3 6 5”。)
我试图通过将String转换为char []然后将char []转换为int []来解决问题。将其转换为char []后我的逻辑是使得格式化int []的数字成为可能。
这是我到目前为止所做的:
public static int[] conversion(String lotto)
{
char[] c = lotto.toCharArray();
int[] a = new int[c.length];
for(int i = 0, j = 0; i < c.length; i++)
{
if(c[i] != ' ' && c[i+1] != ' ')
{
a[j] = c[i] + c[i+1];
i+=2;
j++;
}
else if(c[i] != ' ' && c[i+1] == ' ')
{
a[j] = c[i];
i++;
j++;
}
}
return a;
}//end of conversion method
我仍在研究程序的其余部分,但我知道c [i] + c [i + 1]返回一个ASCII值或一个不同的int,而不是将两个字符组合在一起(我想要的例子) :'3'+'4'= 34。)
如何解决此问题?
答案 0 :(得分:3)
如果您不关心转换为字符数组,那么您可以使用.split()方法
String[] nums = lotto.split(" ");
int[] a = new int[nums.length];
for(int i = 0; i < a.length; i++)
{
a[i] = Integer.parseInt(nums[i]);
}
return a;
答案 1 :(得分:1)
尝试使用String.split
String numbers[] = lotto.split (" ");
答案 2 :(得分:1)
使用字符串split
函数,您可以按空格分割字符串,如下所示:
string[] lottoArray = lotto.split(" ");
然后,您可以循环遍历数组并将值放入int数组中:
int[] numbersArray = new int[lottoArray.length];
for (int i = 0; i < lottoArray.length; i++)
numbersArray[i] = Integer.parseInt(lottoArray[i]);
答案 3 :(得分:1)
Java 1.8的乐趣...一行:
int[] nums = Pattern.compile("\\s")
.splitAsStream("1 34 5 23 7 89 32 4 10 3 6 5")
.mapToInt(Integer::valueOf)
.toArray();
想要对int数组进行排序吗?还是一行:
int[] nums = Pattern.compile("\\s")
.splitAsStream("1 34 5 23 7 89 32 4 10 3 6 5")
.mapToInt(Integer::valueOf)
.sorted()
.toArray();
答案 4 :(得分:1)
我会这样做:
public static int[] string2array(String s) {
return util1(s, 0, 0, false);
}
private static int[] util1(String s, int n, int l, boolean b) {
if (s.isEmpty()) {
return b ? util2(l, n, new int[l + 1]) : new int[l];
}
if (Character.isWhitespace(s.charAt(0))) {
return b ? util2(l, n, util1(s.substring(1), 0, l + 1, false)) : util1(s.substring(1), 0, l, false);
}
return util1(s.substring(1), n * 10 + Character.digit(s.charAt(0), 10), l, true);
}
private static int[] util2(int idx, int value, int[] array) {
array[idx] = value;
return array;
}
Arrays.toString(string2array("1 34 5 23 7 89 32 4 10 3 6 5"))
的结果是
[1, 34, 5, 23, 7, 89, 32, 4, 10, 3, 6, 5]
答案 5 :(得分:0)
拆分包含数字的String
String str = "1 2 33 64";
String[] numbers = str.split(" ");
创建与int[]
相同大小的String[]
:
int[] array = new int[numbers.length];
循环遍历numbers
,解析每个值并将其存储在int[]
中:
for(int i = 0; i < numbers.length; i++)
array[i] = Integer.parseInt(numbers[i]);