有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

矩阵如何在java中正确输入矩阵

我有个问题

我正在尝试制作一个程序,用户可以在其中输入

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--;
            }
        }   
    }
}


    }   
}

共 (2) 个答案

  1. # 1 楼答案

    像这样的怎么样

    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);
    
  2. # 2 楼答案

    char ch[][];
     int rowNum=sc.nextInt();           
     int columnNum=sc.nextInt();
     ch=new char[rowNum][columnNum];
     for (int a = 0; a < rowNum; a++) 
            for (int b = 0; b < columnNum; b++) 
                ch[a][b]= sc.next();
      int i=0;j=0;
     for (int a = 0; a < (rowNum*columnNum); a++) 
      {
                 row[a]=ch[i][j];
                 i++;
                 if(i==rowNum)
                      j++;
      }
    

    这可能会奏效

    if(row[i]=='1'){    
                if(row[i+1]=='0') 
                blocks++;
            }