package matriz_ex_12;
import java.util.Random;
import javax.swing.JOptionPane;
/**
* @author ester
*/
public class Matriz_Ex_12 {
public static void main(String[] args) {
Random randon = new Random();
final int Qtd_col=3;
final int Qtd_lin=3;
int [][] matriz = new int[Qtd_lin][Qtd_col];
matriz = cadastrarNumeros (Qtd_lin , Qtd_col);
JOptionPane.showMessageDialog(null, "***** Memorize *****");
exibirDados(matriz);
int sorteioLinha = randon.nextInt(Qtd_lin);
int sorteioColuna = randon.nextInt(Qtd_col);
int num=Integer.parseInt(JOptionPane.showInputDialog("Qual número consta na linha "+(sorteioLinha+1)+",coluna "+(sorteioColuna+1)+" da matriz" ));
if (verifica(matriz[sorteioLinha][sorteioColuna], num)= true)
{
JOptionPane.showMessageDialog(null, "*** PARABÉNS VOCÊ ACERTOU !!! *** ");
}
else
{
JOptionPane.showMessageDialog(null, "*** QUE PENA VOCÊ ERROU !!! O número correto seria:"+ matriz[sorteioLinha][sorteioColuna] );
}
exibirDados(matriz);
}
static int[][] cadastrarNumeros(int nLin , int nCol)
{
int [][] n = new int [nLin][nCol];
Random randon = new Random();
for (int l=0; l < nLin; l++)
{
for (int c = 0; c < nCol; c++)
{
n[l][c]= randon.nextInt(50);
}
}
return n;
}
static Boolean verifica (int numMatriz)
{
return numeroMatriz == numUsuario ? true: false;
}
static void exibirDados(int[][] n)
{
for (int i=0; i < 3; i++)
{
for (int j=0; j < n[0].length; j++)
{
System.out.print(n[i][j]+ "\t");
}
System.out.println("\n");
}
}
}
Nesta linha você está usando o operador de atribuição (=) ao invés de usar o de comparação (==):
if (verifica(matriz[sorteioLinha][sorteioColuna], num) = true) {
Para corrigir basta alterar o = para == ou omitir a parte == true já que o método verifica retorna um valor booleano que pode ser usado diretamente dentro do if, sem a necessidade de uma comparação.
O segundo erro está no método verifica, onde você esqueceu de adicionar o parâmetro int numUsuario e também colocou numeroMatriz ao invés de numMatriz.
Cara, coisas como “urgente”, “por favor”, etc não agregam em nada. Mostra, apenas, que você é um desesperado.
Qual o erro?
Darlan, realmente estou desesperada. Tenho 53 anos, iniciei o curso há menos de 3 meses, concorrendo
a uma vaga de emprego com 39 jovens que praticamente nasceram com todas as linguagens na “ponta da língua” . Tenho muitas dificuldades. O “por favor” indica atenção com retorno de imensa gratidão, por estar perguntando algo obvio a especialistas como vc. Obrigada.
Observações:
1 - Use nomes significativos para nomes de constantes, variáveis, métodos, classes, etc. Por exemplo, em vez de num, indique numero. Isso facilita a leitura e dá ideia do que se pretende com o código;
2 - Não entendi porque você usou como retorno o tipo encapsulado Boolean do tipo primitivo boolean;
3 - É uma boa prática nomear métodos que retornam um booleano como se fossem uma pergunta. Por exemplo, em vez de verifica, usa-se algo como memorizado, onde se subentende “memorizado?” já que retorna true/false;
4 - Como o método verifica retorna um booleano e as estruturas de seleção, como o if sempre verificam se uma condição é verdadeira para então, somente então, executar um código, não há necessidade de comparar com true (verificar se é verdade). Além disso, como @leonardosnt comentou tu estava atribuindo (=) em vez de comparando (==);
5 - No teste
if(verifica(matriz[linhaSortiada][colunaSrtiada], numero))
JOptionPane.showMessageDialog(null, "*** Parabéns você acertou !!! *** ");
você envia dois parâmetros, mas o método espera apenas um:
static boolean verifica(int numeroMatriz){
return numeroMatriz == numeroUsuario ? true : false;
}
Por fim, aplicando as observações:
import java.util.Random;
import javax.swing.JOptionPane;
/**
* @author ester
*/
public class Matriz_Ex_12 {
public static void main(String[] args){
Random randon = new Random();
final int QUANTIDADE_LINHA = 3;
final int QUANTIDADE_COLUNA = 3;
int linhaSortiada = randon.nextInt(QUANTIDADE_LINHA);
int colunaSortiada = randon.nextInt(QUANTIDADE_COLUNA);
int[][] matriz = new int[QUANTIDADE_LINHA][QUANTIDADE_COLUNA];
matriz = cadastrarNumeros (QUANTIDADE_LINHA , QUANTIDADE_LINHA);
JOptionPane.showMessageDialog(null, "***** Memorize *****");
exibirDados(matriz);
int numero = Integer.parseInt(
JOptionPane.showInputDialog("Qual número consta na linha "
+ (linhaSortiada) + ", coluna " + (colunaSortiada) + " da matriz"));
if(memorizado(matriz[linhaSortiada][colunaSortiada], numero))
JOptionPane.showMessageDialog(null, "*** Parabéns você acertou !!! *** ");
else
JOptionPane.showMessageDialog(null, "*** Que pena você errou !!! O número correto seria:"+ matriz[linhaSortiada][colunaSortiada] );
exibirDados(matriz);
}
public static int[][] cadastrarNumeros(int numeroLinha , int numeroColuna){
int[][] dados = new int[numeroLinha][numeroColuna];
Random randon = new Random();
for(int l = 0; l < numeroLinha; l++){
for (int c = 0; c < numeroColuna; c++){
dados[l][c]= randon.nextInt(50);
}
}
return dados;
}
public static boolean memorizado(int numeroMatriz, int numeroUsuario){
return numeroMatriz == numeroUsuario ? true : false;
}
public static void exibirDados(int[][] n){
for(int i = 0; i < 3; i++){
for(int j = 0; j < n[0].length; j++)
System.out.print(n[i][j]+ "\t");
System.out.println("\n");
}
}
}
Rodando…



Mas quando tu coloca o título do tópico assim, muitos não lhe responderão… Prefira a objetividade e clareza. Um tópico aberto com um título claro e não histriônico melhora as suas chances de obter boas respostas.
Obrigadaaa, deu certo, além de corrigir , tb substituí!
Obrigadaa! Deu certo
Para começar, não nos importamos com idade, gênero, etnia, religião ou o que seja. Nos importamos com objetividade e assertividade.
Você perdeu um tempo precioso justificando coisas desnecessárias.
Deveria ter se atentado a descrever o erro. Isso, sim, faria diferença na busca por uma solução.
Qualquer coisa é desculpa e desculpa é vitimismo.