loops-e-arrays icon indicating copy to clipboard operation
loops-e-arrays copied to clipboard

Erro em código: ArrayMultidimensional

Open GiovanaAlonso opened this issue 3 years ago • 5 comments

Oii Cá!

Acho que sem querer teve uma confusão no seu código ao atribuir Integer.MIN_VALUE para o menor valor, o certo seria atribuir Integer.MAX_VALUE, pois desta forma qualquer novo valor será menor que o valor máximo atribuído. Aqui no meu código deu certo com o Integer.MAX_VALUE, conforme me ensinou anteriormente na outra dúvida.

   " //variáveis
    int menor = **Integer.MIN_VALUE**; //variável que guarda o menor valor
    int linha = 0, coluna = 0; //posição inicial da linha e da coluna"

Abraços

GiovanaAlonso avatar Jul 20 '22 13:07 GiovanaAlonso

Então, Gi. O correto é int menor = Integer.MAX_VALUE; tá? Para guadar o menor valor, você precisa declara assim: int menor = Integer.MAX_VALUE;

A gente atribui o maior valor de um inteiro possível para essa variável menor, porque quando acontecer o primeiro laço de repetição, qualquer número que você digitar, será menor que o valor representado por int menor = Integer.MAX_VALUE; E o mesmo acontece quando você armazenar o maior valor. int maior = Integer.MIN_VALUE; qualquer valor que você informar será maior do que o valor representado por int menor = Integer.MAX_VALUE;

Vou te mostrar um exemplo de código abaixo que você copiar e colocar na sua IDE para entender essa lógica:

import java.util.Scanner;

//Informe 4 números e imprima o menor e o maior deles
public class Main {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int numero = 0;
    int maiorNumero = Integer.MIN_VALUE;
    int menorNumero = Integer.MAX_VALUE;

    System.out.println("Antes de começar o laço: ");
    System.out.println("Maior = " + maiorNumero + " Menor = " + menorNumero);

    System.out.println("Depois de começar o laço: ");
    for(int i = 1; i <= 4; i++) {
      System.out.print("Digite o valor aqui: ");
      numero = scan.nextInt();

      if (numero > maiorNumero) {
        maiorNumero = numero;
      }
      if (numero < menorNumero) {
        menorNumero = numero;
      }
      System.out.println(i + " Laço: Maior = " + maiorNumero + " Menor = " + menorNumero);
    }
  }
}

2022-07-20_16-21 2022-07-20_16-24

Essas constantes, servem para você começar o laço de repetição. Qualquer valor que você informar irá substituir eles. Conforme foi feio acima. Só para conhecimento, abaixo segue os valores das constantes.

min-e-max

E aí, ajudou? Qualquer coisa é só falar.

cami-la avatar Jul 20 '22 21:07 cami-la

Oii Cá! Sim, eu tinha entendido isso. Estava informando apenas que no seu exemplo de código comentado está errado, atribuindo MIN_VALUE para o menor valor, sendo que o correto seria MAX_VALUE. O pedaço de código copiado que enviei é o exemplo de código que a professora deu. Dá uma olhadinha lá depois, só estou avisando porque pode acabar confundindo os outros alunos! Eu acabei percebendo que estava errado, porque a professora já tinha me explicado sobre o assunto anteriormente e corrigi sozinha, mas talvez o pessoal confunda.

Mas muito obrigada pela explicação detalhada!

Abraços

GiovanaAlonso avatar Jul 20 '22 22:07 GiovanaAlonso

Eita, Gi. Não vi onde eu atribui os valores errados a s variáveis menor e maior. :( Poderia me mostrar para que eu conserte? Na issue anterior que nós estávamos conversando, foi atribuído corretamente:

2022-07-21_05-17

Ah nada, precisando e eu puder ajudar, é só falar. É um prazer ajudar. (:

cami-la avatar Jul 21 '22 08:07 cami-la

Oiii Cami! Claro! Segue um print para você localizar mais fácil: loops-e-arrays/ src / br / com / dio / exercicios / arrays / comentado / ArrayMultidimensional.java

issue

GiovanaAlonso avatar Jul 22 '22 13:07 GiovanaAlonso

Aaaah, show! Muito obrigada! vou corigir agorinha! <3 https://github.com/cami-la/loops-e-arrays/commit/2c84ee9c40094afe1de1f0e011f8415074ff8ea3

cami-la avatar Jul 22 '22 14:07 cami-la