[RESOLVIDO] problema com matriz

pessoal, fiz um programa aqui e tá dando um problema, sempre tá falando que o andar com mais moradores é o 10, tem algo errado

segue o código abaixo:

Exercício 5 ? MATRIZ
O edifício MACK VISTA tem 10 andares e em cada andar existem 8 apartamentos. O síndico do prédio
resolveu fazer o seguinte levantamento:
Quantidade de apartamentos vazios (nº moradores = 0)
Qual é o andar que tem o maior número de moradores
Quantidade total de moradores do prédio
Faça um programa em Java que simule esta situação da seguinte forma. Construa uma matriz M(10x8), que
represente a estrutura do prédio, sendo: linha 0 - 1º andar, linha 1 - 2º andar e assim por diante. Para
simular a quantidade de moradores em cada apartamento, preencha a matriz com números aleatórios
entre 0 e 6. Exiba esta matriz na tela para poder aferir os resultados. Calcule e exiba os levantamentos que
o síndico deseja realizar.

[code]package exercicio_extra_vetores;

public class Exercicio5 {

public static void main(String[] args) {

	int M[][] = new int [10][8];
	int soma = 0, vazio = 0, maior = 0, sand;
	
	for (int i = 0; i < 10; i++){
		for (int j = 0; j < M[i].length; j++){
			do {
				M[i][j] = (int) (100 * Math.random());
			} while ((M[i][j] < 0) || (M[i][j] > 6));
		}
	}
	
	for (int i = 0; i < 10; i++){
		System.out.println();
		sand = 0;
		for (int j = 0; j < M[i].length; j++){
			System.out.print(M[i][j] + " ");
				if (M[i][j] == 0){
					vazio ++;
				}
			soma += M[i][j];
			sand += M[i][j]; //O PROBLEMA ESTÁ POR AQUI
				if (sand > maior){
					maior = i;
				}
		}
	}
	
	maior += 1; //soma 1 em maior pois na matriz ele conta de 0-9, e como são 10 andares pra ficar melhor pro usuário ai aparece números entre 1-10
	
	System.out.println();
	System.out.println("Existem " + vazio + " apartamentos vazios!");
	System.out.println("O andar " + maior + " têm o maior número de moradores!");
	System.out.println("Existem " + soma + " moradores no prédio!");
	}

}[/code]

Tua variavel maior é usada na linha 29 para fazer uma comparacao, mas
ela só é atribuida inicialmente com ZERO.

Então ela tem valor sempre igual a ZERO e você faz uma comparacao para
saber se sand que vem sendo sempre acumulado (+=) será maior que ZERO.

é obvio que será sempre. Então nesse loop tudo irá sempre até o fim, até o 10
e este será o maior.

Tente colocar em maior o valor do maior andar e não apenas o número dele.
Não vou perder muito tempo com seu exercicio, mas minha impressão é que
você deveria compara sand com soma, algo assim, na linha 29 e não com maior.

[quote=JoaoBluSCBR]Tua variavel maior é usada na linha 29 para fazer uma comparacao, mas
ela só é atribuida inicialmente com ZERO.

Então ela tem valor sempre igual a ZERO e você faz uma comparacao para
saber se sand que vem sendo sempre acumulado (+=) será maior que ZERO.

é obvio que será sempre. Então nesse loop tudo irá sempre até o fim, até o 10
e este será o maior.

Tente colocar em maior o valor do maior andar e não apenas o número dele.
Não vou perder muito tempo com seu exercicio, mas minha impressão é que
você deveria compara sand com soma, algo assim, na linha 29 e não com maior.[/quote]

entendi meu erro, não tem muito a ver com o que vc percebeu, mas vai o que percebi de errado:
a variável maior vai receber o numero da linha, e nas comparações, o sand sempre vai ser maior que o maior

if (sand > maior){ maior = sand; andar = i; //antes o maior recebia a linha e nao existia uma variavel para receber o até entao andar com maior numero de moradores para fazer a comparação }

tenta assim:

public static void main(String[] args) {
		int M[][] = new int [10][8];
        int soma = 0, vazio = 0, maior = 0, sand;

        for (int i = 0; i < 10; i++){
            for (int j = 0; j < M[i].length; j++){
                do {
                    M[i][j] = (int) (100 * Math.random());
                } while ((M[i][j] < 0) || (M[i][j] > 6));
            }
        }

        int qtdMaiorAp = 0;
        for (int i = 0; i < 10; i++){
            System.out.println();
            sand = 0;
            for (int j = 0; j < M[i].length; j++){
                System.out.print(M[i][j] + " ");
                    if (M[i][j] == 0){
                        vazio ++;
                    }
                soma += M[i][j];
                sand += M[i][j];
            }
            if(sand > qtdMaiorAp){
            	qtdMaiorAp = sand;
            	maior = i;
            }
        }

        maior += 1; //soma 1 em maior pois na matriz ele conta de 0-9, e como são 10 andares pra ficar melhor pro usuário ai aparece números entre 1-10

        System.out.println();
        System.out.println("Existem " + vazio + " apartamentos vazios!");
        System.out.println("O andar " + maior + " têm o maior número de moradores!");
        System.out.println("Existem " + soma + " moradores no prédio!");
   }

[quote=marcosharbs]tenta assim:

[code]
public static void main(String[] args) {
int M[][] = new int [10][8];
int soma = 0, vazio = 0, maior = 0, sand;

    for (int i = 0; i < 10; i++){
        for (int j = 0; j < M[i].length; j++){
            do {
                M[i][j] = (int) (100 * Math.random());
            } while ((M[i][j] < 0) || (M[i][j] > 6));
        }
    }

    int qtdMaiorAp = 0;
    for (int i = 0; i < 10; i++){
        System.out.println();
        sand = 0;
        for (int j = 0; j < M[i].length; j++){
            System.out.print(M[i][j] + " ");
                if (M[i][j] == 0){
                    vazio ++;
                }
            soma += M[i][j];
            sand += M[i][j];
        }
        if(sand > qtdMaiorAp){
        	qtdMaiorAp = sand;
        	maior = i;
        }
    }

    maior += 1; //soma 1 em maior pois na matriz ele conta de 0-9, e como são 10 andares pra ficar melhor pro usuário ai aparece números entre 1-10

    System.out.println();
    System.out.println("Existem " + vazio + " apartamentos vazios!");
    System.out.println("O andar " + maior + " têm o maior número de moradores!");
    System.out.println("Existem " + soma + " moradores no prédio!");

}
[/code][/quote]

fiz exatamente dessa maneira, tinha esquecido de uma variável pra ajudar, rsrs estou começando em java agora e tenho alguns erros bobos ainda
mas valeu ai, deu certinho