例如,如果我输入“ 0 3 5 2 5 5”行,如何将数字转换为包含“ 0,3,5,2,5,5,5”的数组
现在,我使用此代码,但是它不起作用。
System.out.println("How many numbers?");
int numbers = in.nextInt();
System.out.println("write in the following way:");
System.out.println("num1 num2 num3 ");
String msg = in.next() + " ";
int[] list = omv(numbers, msg);
for (int i = 0; i < numbers; i++){
System.out.println(list[i]);
}
}
static int[] omv(int num, String msd) {
int separat1 = 0;
int separatee2 = 0;
int[] list = new int[antal - 1];
String letter;
int letterint;
int length = meddelande.length();
while (separate1 >= length || separate1 != -1 || separate2 >= length || separate2 != -1) {
separate1 = msg.indexOf(' ', separate2);
// Hittar nästa mellanslag
letter = msg.substring(separate2, separate1);
// ERROR HERE
letterint = Integer.parseInt(letter);
list[i] = letterint;
separate2 = (separate1 + 1);
i++;
}
return list;
}
这不起作用,并且在 字母= msg.substring(分隔符2,分隔符1) 我还没有找到解决此问题的方法,请帮忙,非常感谢
答案 0 :(得分:3)
如果您使用的是Java-8,则可以使用:
int[] ints = Arrays.stream(" 0 3 5 2 5 5 ".trim().split("\\s+"))
.mapToInt(Integer::valueOf)
.toArray();
答案 1 :(得分:2)
如果您没有Java 8或更高版本,则可以采用经典方式:
public static void main(String[] args) {
String numberString = " 0 3 5 2 5 5 ";
// trim and split the String by an arbitrary amount of whitespaces
String[] stringNumbers = numberString.trim().split("\\s+");
// create an array of integers with the same size
int[] numbers = new int[stringNumbers.length];
// parse each String-number to int and put it into the int array
for (int i = 0; i < numbers.length; i++) {
numbers[i] = Integer.valueOf(stringNumbers[i]);
}
// print all the numbers from the int array
for (int num : numbers) {
System.out.println(num);
}
}
输出:
0
3
5
2
5
5
答案 2 :(得分:1)
如果字符串中有空格,则可以使用
String numbers="0 3 5 2 5 5";
String numbersArr[] = numbers.split(" ");
所以你会有一个数组
因此,如果您想要一个数字数组,可以这样做
int newNumbersArr[] = new int[numbersArr.length];
for(int i = 0; i<numbersArr.length; i++){
newNumbersArr[i] = Integer.valueOf(numbersArr[i]);
}