2017-08-12 71 views
-4

我试图转换一个字符串数组本身是另一个数组的一部分从外部文件馈入到Java中。从列中排列的数组转换字符串数据

有两个部分对这个问题:

  1. 如何字符串的子元素转换为双打或者整形?
  2. 如何跳过本身是字符串一部分的标题?

我有以下一段代码不会给我一个错误,但它也不会给我输出。数据按列排列,因此就分割而言,我不确定使用哪个分隔符作为该方法的参数。我试过\r, \n, ",", " ",没什么效果。

str0 = year.split(",");       
year = year.trim();       
int[] yearData = new int[str0.length-1]; 

for(i = 0; i < str0.length-1; i++) { 
    yearData[i] = Integer.parseInt(str0[i]); 
    System.out.println(yearData[i]); 
} 
+2

这怎么不显示输出?它是否正确运行...? – clabe45

+3

请提供您输入的最简单示例,输出应该是什么以及您得到的错误或当前输出。阅读本指南:[mcve] – tima

+0

请显示您希望程序能够处理的输入。 –

回答

0

您提供的代码不起作用。无论如何,考虑使用正则表达式的给定示例,其中您找到了字符串中的所有数字,所以我们的正则表达式运行良好。通过更改正则表达式,您可以获取子字符串以及您可以跳过头部部分。我希望这会有所帮助。

String regEx = "[+|-]?(\\d+(\\.\\d*)?)|(\\.\\d+)"; 
    String str = "256 is the square of 16 and -2.5 squared is 6.25 “ + “and -.243 is less than 0.1234."; 
    Pattern pattern = Pattern.compile(regEx); 
    Matcher m = pattern.matcher(str); 
    int i = 0; 
    String subStr = null; 
    while(m.find()) { 
    System.out.println(m.group()); 
0

尝试这样:

year = year.trim(); // This should come before the split()... 
str0 = year.split("[\\s,;]+"); // split() uses RegEx... 
int[] yearData = new int[str0.length-1]; 

for(i = 0; i < str0.length-1; i++) { 
    yearData[i] = Integer.parseInt(str0[i]); 
    System.out.println(yearData[i]); 
}