
java去掉字符串的空格并放入数组中
问题是:我输入字符串r=“123420”,这里面有不等长的空格,我现在要把里面的数字取出来保存在int[]里面,应该怎么做?试过r.splite("");可是只能删掉一个...
问题是:我输入字符串r=“1 2 3 4 20”,这里面有不等长的空格,我现在要把里面的数字取出来保存在int[]里面,应该怎么做?试过r.splite(" ");可是只能删掉一个空格并保存为数组。用replace或trim又把所有空格删掉了我就无法判断这是几位数了。
展开
2个回答
展开全部
这样?
public class string_int_tokens
{
public static void main (String[] args)
{
String str = "1 2 3 4 20";
String[] strArray = str.split("\\s{1,}");
int[] intArray = new int[strArray.length];
for (int i = 0; i < strArray.length; ++i) {
intArray[i] = Integer.parseInt(strArray[i]);
}
for (int k = 0; k < intArray.length; ++k) {
System.out.println(intArray[k]);
}
}
}
运行:
1
2
3
4
20
更多追问追答
追问
是这样,可是有个小问题,就是如果输入是“ 1 2 3 4”,前面有空格就会报错。除了先trim()一下这种解决方法以外,能不能直接改进下正则表达式实现?
追答
① 先trim再split是最简单的方法。前有空格,修改正则也没用,因为这不是匹配。
② 修改成正则匹配,不如StringTokenizer来的简单,修改如下:
import java.util.*;
public class string_int_tokens
{
public static void main (String[] args)
{
String str = " 1 2 3 4 20";
StringTokenizer tokens = new StringTokenizer(str, " ");
int[] intArray = new int[tokens.countTokens()];
int index = 0;
while(tokens.hasMoreTokens()){
intArray[index] = Integer.parseInt(tokens.nextToken());
++index;
}
for (int i = 0; i < intArray.length; ++i) {
System.out.println(intArray[i]);
}
}
}
展开全部
public class Test {
public static void main(String[] args) {
String s = "1 2 3 4 20";
String s2[] = s.split(" ");
int count=0; //用于统计不是空格的字符串数量,以便后面定义int数组长度
for(int i = 0;i<s2.length;i++) {
if(!(s2[i].equals(""))){ //遍历字符串数组,不是空格的输出并自加count
System.out.println(Integer.parseInt(s2[i]));
count++;
}
}
int a[] = new int[count]; //定义个数组长度为上面统计的
int f = 0;
for(int i = 0;i<s2.length;i++) {
if(!(s2[i].equals(""))){
a[f] =Integer.parseInt(s2[i]);//将不是空格的字符转换为int并赋值给整型数组,从第0个开始
f++;
}
}
for(int b:a) {
System.out.println(b);//输出整形数组
}
}
}
public static void main(String[] args) {
String s = "1 2 3 4 20";
String s2[] = s.split(" ");
int count=0; //用于统计不是空格的字符串数量,以便后面定义int数组长度
for(int i = 0;i<s2.length;i++) {
if(!(s2[i].equals(""))){ //遍历字符串数组,不是空格的输出并自加count
System.out.println(Integer.parseInt(s2[i]));
count++;
}
}
int a[] = new int[count]; //定义个数组长度为上面统计的
int f = 0;
for(int i = 0;i<s2.length;i++) {
if(!(s2[i].equals(""))){
a[f] =Integer.parseInt(s2[i]);//将不是空格的字符转换为int并赋值给整型数组,从第0个开始
f++;
}
}
for(int b:a) {
System.out.println(b);//输出整形数组
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询