JAVA如何基于空格将字符串拆分为int数组
我有多行输入,其中每行是矩阵的行。我将这一行保存为字符串,然后我想根据空格分割这一字符串,但由于可读性更好,数字之间的空格数没有定义。因此,当我想在以后解析为int时,它会抛出一个错误,因为在某些地方有多个空格。有什么办法可以解决这个问题吗?谢谢 这是我的代码,我是如何解决的JAVA如何基于空格将字符串拆分为int数组,java,matrix,input,split,Java,Matrix,Input,Split,我有多行输入,其中每行是矩阵的行。我将这一行保存为字符串,然后我想根据空格分割这一字符串,但由于可读性更好,数字之间的空格数没有定义。因此,当我想在以后解析为int时,它会抛出一个错误,因为在某些地方有多个空格。有什么办法可以解决这个问题吗?谢谢 这是我的代码,我是如何解决的 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line; int[][] matrix=new int[n
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".split("\\s+"); // ["10", "10", "0", "10", "5"]
" 5 20 10 7 12".split("\\s+"); // ["", "5", "20", "10", "7", "12"]
然后你会得到一个额外的空字符串。添加额外的trim()
应有助于:
line.trim().split("\\s+");
如果您正确地写入了逻辑部分,您可以使用空格作为分隔符,还可以使用If/then语句(测试isWhitespace或isDigit)来避免额外的空格 老实说,您可以使用isDigit验证位置[i]处的项实际上是一个数字,然后将该数据存储在字符串中
我不会为你写代码,但是这个问题有很多解决方法。。。问题完全在于你对字符串中存储内容的定义。Aleksandar所说的是一种简单的方法。只需使用
trim()
将多个空格替换为一个空格,然后执行您已经执行的操作。您能否提供收到的错误消息?当我们有此功能时,可以更轻松地帮助您。您的line.split(\\s+)
应该已经成功了。你看到了什么错误?
line.trim().split("\\s+");