Calculo determinante Poo

4 respostas Resolvido
pooprogramaçãojava
R

Pessoal preciso de ajuda estou criando uma classe determinante ele faz o calculo retorna certo depois, da um erro assim abaixo tem o código da classe que eu fiz?

Opção: 5
Informe 1o valor da 1a linha : 1
Informe 2o valor da 1a linha : 1
Informe 3o valor da 1a linha : 1
Informe 1o valor da 2a linha : 1
Informe 2o valor da 2a linha : 1
Informe 3o valor da 2a linha : 1
Informe 1o valor da 3a linha : 2
Informe 2o valor da 3a linha : 2
Informe 3o valor da 3a linha : 3
O determinante da matriz eh : 0.0

Escolha a opção desejada
1 - Soma de duas Matrizes
2 - Subtração de duas Matrizes
3 - Multiplicação de duas Matrizes
4 - Multiplicação de uma matriz por Escalar
5 - Calculo de determinante de Matrizes
6 - Sair

Exception in thread “main” java.util.NoSuchElementException

Opção: 	at java.util.Scanner.throwFor(Scanner.java:862)

at java.util.Scanner.next(Scanner.java:1485)

at java.util.Scanner.nextInt(Scanner.java:2117)

at java.util.Scanner.nextInt(Scanner.java:2076)

at exemplo.menu.iniciar(menu.java:33)

at exemplo.Exemplo.main(Exemplo.java:21)

C:\Users\Rafa\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1

FALHA NA CONSTRUÇÃO (tempo total: 11 segundos)

package exemplo;

import java.util.Scanner;

public class determinante {

Scanner entrada = new Scanner(<a href="http://System.in">System.in</a>);

double det = 0;

double diagPrin1, diagPrin2, diagPrin3, diagSec1, diagSec2, diagSec3; // Variaveis para cálculo das diagonais

double mat[][] = new double [3][3]; // Declarando e alocando matriz
void determinante(){

for (int i=0; i<mat.length; i++) {

for (int j=0; j<mat[i].length; j++) {

System.out.printf("Informe %do valor da %da linha : ", j+1, i+1);

mat[i][j] = entrada.nextDouble();

}

}

// Diagonais principais

diagPrin1 = mat[0][0] * mat[1][1] * mat[2][2];

diagPrin2 = mat[0][1] * mat[1][2] * mat[2][0];

diagPrin3 = mat[0][2] * mat[1][0] * mat[2][1];

// Diagonais Secundárias

diagSec1 = mat[2][0] * mat[1][1] * mat[0][2];

diagSec2 = mat[2][1] * mat[1][2] * mat[0][0];

diagSec3 = mat[2][2] * mat[1][0] * mat[0][1];

// Determinante

det = -(diagSec1 + diagSec2 + diagSec3) + (diagPrin1 + diagPrin2 + diagPrin3);

System.out.println("O determinante da matriz eh : " + det);

entrada.close();

}

}

4 Respostas

D

Acho que o problema está em outra classe ou trecho de código.
Verifique sua classe menu e Exemplo, procure por Scanner.next e tente substituir por Scanner.nextLine.

“Rafael_Rampanelli:

at exemplo.menu.iniciar(menu.java:33)

classe menu na linha 33

classe Exemplo na linha 21

R

segue classe menu e exemplo:

package exemplo;

import java.util.Scanner;

/**
*

  • @author rafael.191188
    
    */
    
    public class menu {
    
    Scanner entrada = new Scanner(<a href="http://System.in">System.in</a>);
    
    somaMatrizes som = new somaMatrizes();
    
    subtracaoMatrizes sub = new subtracaoMatrizes();
    
    multiplicacaoMatrizes mult = new multiplicacaoMatrizes();
    
    multMatrizpEscalar escalar = new multMatrizpEscalar();
    
    determinante det = new determinante();
    
    void iniciar() {
    
    /*Metodo Iniciar onde criamos o menu da conta definindo as opçoes disponiveis
    
    no nosso caixa eletronico
    
    */
    
    int opcao;
    
    do {
         exibeMenu();
         opcao = entrada.nextInt();
         escolheOpcao(opcao);
     } while (opcao != 6);
    

    }

    public void exibeMenu() {
    
    /* Metodo exibe menu, com as opçoes impresas de escolha no caixa eletronico para
    
    o cliente escolher a que ele quer.
    
    */
    
    System.out.println("\n Escolha a opção desejada");
    
    System.out.println(1 - Soma de duas Matrizes);
    
    System.out.println(2 - Subtração de duas Matrizes);
    
    System.out.println(3 - Multiplicação de duas Matrizes);
    
    System.out.println(4 - Multiplicação de uma matriz por Escalar);
    
    System.out.println(5 - Calculo de determinante de Matrizes);
    
    System.out.println(6 - Sair\n);
    
    System.out.print("Opção: ");
    

    }

    public void escolheOpcao(int opcao) {

    switch (opcao) {
         
         
         case 1:
             som.leituraMatrizA();
             som.leituraMatrizB();
             som.soma();
             
             break;
         case 2:
            sub.leituraMatrizA();
             sub.leituraMatrizB();
             sub.subtracao();
             break;
         case 3:
             mult.leituraMatrizA();
             mult.leituraMatrizB();
             mult.multiplicacao();
             break;
    
         case 4:
            escalar.leituraMatrizA();
            escalar.escala();
            escalar.escalar();
             break;
             
         case 5:
            det.determinante();
             break;
    
         case 6:
             System.out.println("Sistema encerrado.");
             break;
    
         default:
             System.out.println("Opção inválida digite as opções entre 1 e 6");
     }
    

    }
    }

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package exemplo;

/**
*

  • @author rafael.191188
    */
    public class Exemplo {

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {

      menu calc = new menu();

      calc.iniciar();

    }

}

D
Solucao aceita

Acho que o problema está na classe determinante na linha entrada.close();.Acredito que quando fecha o scanner, o System.in também fecha, mas está sendo reutilizado em outros locais na aplicação. Removendo aquele trecho, deve funcionar:

// entrada.close();
R

ok resolvido obrigado diego12

Criado 24 de setembro de 2017
Ultima resposta 2 de out. de 2017
Respostas 4
Participantes 2