Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中正确输入矩阵_Java_Matrix_Multidimensional Array - Fatal编程技术网

如何在java中正确输入矩阵

如何在java中正确输入矩阵,java,matrix,multidimensional-array,Java,Matrix,Multidimensional Array,我有个问题 我正在尝试制作一个程序,用户将在其中键入 r=行 c=列 在0和1之后,只要矩阵是满的 因此,它将创建一个图片。。。。r*v…,用字符1和0填充 那些1代表块。 现在程序应该输出图片中有多少块? (0001001110-随机矩阵第一行的示例)-将打印出2 我正在努力正确地输入程序,然后计算那些块的数量 这就是我到目前为止一直在尝试的 import java.util.Scanner; class Blocks{ public static void main(String

我有个问题

我正在尝试制作一个程序,用户将在其中键入

r=行 c=列 在0和1之后,只要矩阵是满的

因此,它将创建一个图片。。。。r*v…,用字符1和0填充

那些1代表块。 现在程序应该输出图片中有多少块? (0001001110-随机矩阵第一行的示例)-将打印出2

我正在努力正确地输入程序,然后计算那些块的数量

这就是我到目前为止一直在尝试的

import java.util.Scanner;

class Blocks{

    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);

        int rowNum=sc.nextInt();            //number of rows
        int columnNum=sc.nextInt();         //number of columns

        int blocks=0;
        char[][] matrix=new char[rowNum][columnNum];


        for (int a = 0; a < rowNum; a++) {
            for (int b = 0; b < columnNum; b++) {
                char[] row= sc.next().toCharArray();

           for(int i=0; i<matrix.length;i++) {
            if(row[i]=='1'){
                blocks++;
                if(row[i+1]=='1') {
                blocks--;
            }
        }   
    }
}


    }   
}
import java.util.Scanner;
类块{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int rowNum=sc.nextInt();//行数
int columnNum=sc.nextInt();//列数
整数块=0;
char[][]矩阵=新字符[rowNum][columnNum];
对于(int a=0;a对于(inti=0;i像这样的东西怎么样

int blocks = 0;
char[][] matrix = new char[rowNum][columnNum];


int nbrOfBlocks = 0;
for (int a = 0; a < rowNum; a++) {
  matrix[a] = sc.next().toCharArray();

  int index = 0;
  while (index < matrix[a].length) {

    if (matrix[a][index] == '1') {
      ++nbrOfBlocks;
      while (index < matrix[a].length && matrix[a][index] == '1') {
        ++index;
      }
    }

    ++index;
  }
}

System.out.println(nbrOfBlocks);
int块=0;
char[][]矩阵=新字符[rowNum][columnNum];
int=0;
对于(int a=0;a
why 2 for(0001001110-随机矩阵第一行示例)-这将打印出2?问题是什么?另一个例子:r=2 c=4 0010 1100 1111 0101这将打印出5。因为它只在该矩阵中查找1,1构成一个块。11是块大小2。1111是块大小4…依此类推。上面的例子有3个块。一个在第一行,另一个在第二行,然后再次在第四行ird和第四行的2个块问题是我甚至不能正确输入。我如何不断要求用户给我这些数字(0和1)直到矩阵满为止。这些块是由一个或多个值为1的相邻元素组成的组。这只是输入格式的第一部分,请正确解释,否则会有很多错误。很抱歉,这给了我一个错误,试图编译…不兼容的类型:char[]无法转换为字符深度优先搜索与这个简单的问题有什么关系?最初的问题并没有明确说明块只在一行内形成,对于这样的块,DFS将是一个很好的解决方案。@Simon块也可以在colums 00100/00100/10000/中形成,有2个块…@Simon谢谢!但是我们如何才能如果块在一列中,或者如果块是完美的矩形,我会在帖子中添加更多信息…你太棒了!
if(row[i]=='1'){    
            if(row[i+1]=='0') 
            blocks++;
        }
int blocks = 0;
char[][] matrix = new char[rowNum][columnNum];


int nbrOfBlocks = 0;
for (int a = 0; a < rowNum; a++) {
  matrix[a] = sc.next().toCharArray();

  int index = 0;
  while (index < matrix[a].length) {

    if (matrix[a][index] == '1') {
      ++nbrOfBlocks;
      while (index < matrix[a].length && matrix[a][index] == '1') {
        ++index;
      }
    }

    ++index;
  }
}

System.out.println(nbrOfBlocks);