1
resposta

Erro no Formulation

Olá pessoal, estou com erro em uma variável. No código abaixo peço para ler um arquivo e imprimir no console e em outro arquivo a variável lida.

package General;

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.PrintStream;
    import java.util.Locale;
    import java.util.Scanner;
/**
 *     
 * @author Edisson Sávio de Góes Maciel
 * @version 1.0
 * @since 12/2022
 *
 * This class reads the general variables to perform numerical simulation. Moreover, it also reads the computational
 * indexes of the computational mesh, which are necessary to determine the geometric coordinates.
 * 
 */
        public class InputDatas1

{        public static void main (String[] args) throws FileNotFoundException

{        InputDatas1Procedure(); }

        public static void InputDatas1Procedure() throws FileNotFoundException

{//    Entrance flux by archive

//        Preparing to create Status1.dat                
        PrintStream psStatus1 = new PrintStream ("Status1.dat");

        Scanner scanner = new Scanner(new File("Datas1.csv"));
        while (scanner.hasNextLine())
{            String linha = scanner.nextLine();
            Scanner linhaScanner = new Scanner(linha);
            linhaScanner.useLocale(Locale.US);                
            linhaScanner.useDelimiter(",");
            String text1  = linhaScanner.next();
            String text2  = linhaScanner.next();

            GeneralProperties genprop = new GeneralProperties();
//            Defining general properties    

            switch(text2)
{//        Defining the formulation    
            case "Thermal Equilibrium and Chemical Non-Equilibrium" : genprop.setFormulation(text2);
            case "Thermochemical Non-Equilibrium" : genprop.setFormulation(text2);
            case "Thermochemical Non-Equilibrium - Mars" : genprop.setFormulation(text2);
            psStatus1.println(text1 + "," + text2);
            System.out.println(genprop.getFormulation()); }

            switch(text2)
{//        Defining the gas chemical model            
            case "Five Species Chemical Model" : genprop.setGasModel(text2);
            case "Seven Species Chemical Model" : genprop.setGasModel(text2);
            case "Nine Species Chemical Model" : genprop.setGasModel(text2);
            case "Eleven Species Chemical Model (Standard)" : genprop.setGasModel(text2);
            case "Eleven Species Chemical Model (FULL)" : genprop.setGasModel(text2);
            psStatus1.println(text1 + "," + text2);
            System.out.println(genprop.getGasModel()); }
            PhysicalProperties phyprop = new PhysicalProperties();
//            Defining physical properties

            switch(text2)
{//        Defining the attack angle - Three values are possible
            case "0.0e0" : phyprop.setAttackAngle(Double.parseDouble(text2));
            case "5.0e0" : phyprop.setAttackAngle(Double.parseDouble(text2));
            case "10.0e0" : phyprop.setAttackAngle(Double.parseDouble(text2));
            psStatus1.println(text1 + "," + text2);
            System.out.println(phyprop.getAttackAngle()); }

            switch(text2)            
{//        Defining the Mach number
            case "6.0e0" : phyprop.setMach(Double.parseDouble(text2));
            case "8.78e0" : phyprop.setMach(Double.parseDouble(text2));
            case "10.6e0" : phyprop.setMach(Double.parseDouble(text2));
            case "14.8e0" : phyprop.setMach(Double.parseDouble(text2));
            case "15.0e0" : phyprop.setMach(Double.parseDouble(text2));
            case "23.9e0" : phyprop.setMach(Double.parseDouble(text2));
            case "25.34e0" : phyprop.setMach(Double.parseDouble(text2));
            case "26.0e0" : phyprop.setMach(Double.parseDouble(text2));
            case "31.0e0" : phyprop.setMach(Double.parseDouble(text2));
            case "32.0e0" : phyprop.setMach(Double.parseDouble(text2));
            case "35.0e0" : phyprop.setMach(Double.parseDouble(text2));
            case "39.0e0" : phyprop.setMach(Double.parseDouble(text2));
            psStatus1.println(text1 + "," + text2);
            System.out.println(phyprop.getMach()); }

O ponto é que ele lê a variável "formulation" e imprime corretamente, mas quando eu termino esta class que vou passar para a seguinte, a variável "formulation" aparece null. Eu acho que outras variáveis que eu mando ler também estão nesta situação, que parece ser um erro generalizado. Acima eu mostro dois trechos do código que estão em sequência, só para dizer que text2 é testado em vários switch e quando ele passa por um switch que já passou antes pode ser que ele anule o valor final por não haver modificação. Por exemplo, quando text2 = Saxena and Nair (2005) ele passa por um siwtch que tem "Thermal Equilibrium and Chemical Non-Equilibrium" que ele já passou antes e pode ser que por não mudar nada ele zere a resposta. É só um pensamento meu. Fico no aguardo de seu retorno, obrigado, Edisson Sávio.

1 resposta

Oi Edisson, tudo bem?

Você está executando uma classe de cada vez? Se sim, acredito que o problema esteja aí. Você executa a primeira classe e muda o formulation. Até aí, tudo certo. Porém, ao executar outra classe, o Java limpa toda a memória reservada antes, então ao executar a próxima classe o formulation "esquece" tudo que já recebeu antes. Por isso, é interessante ter apenas uma classe executável (com método main), como tinha comentado com você em outro tópico.

Espero ter ajudado! Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software