2016-02-23 38 views
1

我有多个行输入每一行是矩阵的行为int阵列。我将这行保存为字符串,之后我想根据空格拆分这个字符串,但由于更好的可读性,数字之间的空格数量没有定义。所以当我想在之后解析为int时,它会抛出一个错误,因为在某些地方有多个空格。有什么解决方案,我可以解决这个问题?由于JAVA-如何分割字符串基于空间

这里是我的代码,我如何试图解决了

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String line; 
int[][] matrix=new int[n][n]; 
String[] temp; 
for (int row = 0; row < n; row++) { 
    line =br.readLine(); 
    temp = line.split("\\s+"); 
    for(int i=0;i<n;i++){ 
    matrix[i][row]=Integer.parseInt(temp[i]); 
} 

这里是实施例一输入

10 10 0 10 5 
5 20 10 7 12 
1 2 3 5 9 
10 15 20 35 2 
2 15 5 15 2 
+0

你可以提供你的错误消息(S)?当我们有这个问题时,它可以帮助你更容易。 – GreekQuestionMark

+0

你的'line.split(“\\ s +”);'应该已经完成​​了。你看到什么错误? – gonzo

回答

2

的问题是,当你在字符串开头空格:

"10 10 0 10 5".split("\\s+"); // ["10", "10", "0", "10", "5"] 
" 5 20 10 7 12".split("\\s+"); // ["", "5", "20", "10", "7", "12"] 

,那么你得到一个额外的空字符串。添加一个额外的trim()应该有所帮助:

line.trim().split("\\s+"); 
-1

如果你正确地写入逻辑部分,你可以用你的空间作为分隔符,并与原谅的额外空间的if/then语句(测试isWhitespace,或ISDIGIT)。

老实说,你可以只使用ISDIGIT的位置,以验证项目[i]是实际上是一个数字,只是存储在您的字符串此数据。

我不会为你写的代码,但有一吨的解决方法对于这个问题......,问题全在你什么都存储在你的字符串定义,真的。

+0

添加实际代码可能会更有帮助。 – KPrince36