Ajuda em Montar programa com Mais de uma Class

8 respostas
spurts

Bom eu tenhu q montar um programa na qual tem q possuir uma class MAIN, MANIPULA, MEMORIA, UNIDADE_CONTROLE,ULA.

no qual a memoria deve guardar todos os dados para ser usado nas outras classes… mas eu guardo normalmente usando SET e GET na memoria… porem… qdu outra class vai pegar da memoria… da NULL ou NullPointerException sera q alguem poderia me auxiliar a como montar esse programa…

8 Respostas

M

seria interessante postar teu codigo para te ajudar, pois é muito relativo tua duvida :idea:

Jeferson_Manetti

hum… isso tem cara de concorrencia em… seria o caso do produtor / consumidor… classico exemplo utilizados por professores na facu XD

posta o codigo ai pra gente dar uma olhadinha =)

spurts
package ias_machine;

/**
 *
 * @author Pablo
 */
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class Manipula {

public static void carregar(String arquivo)
throws FileNotFoundException, IOException {
Memoria mem= new Memoria();
File file = new File(arquivo);
int t;

if (! file.exists()) {

}

BufferedReader br = new BufferedReader(new FileReader(arquivo));
StringBuffer bufSaida = new StringBuffer();

String linha;
int cont=0;
while( (linha = br.readLine()) != null ){
   try{
    t=Integer.parseInt(linha);
   if(t<=1000){
       mem.setDados(t,cont);
       cont++;
    }
    }
   catch(NumberFormatException numberFormatException){
            mem.setInstrucao(linha,cont);
            cont++;

}
}
mem.setMemoriaPrincipal();
br.close();
}
}
package ias_machine;

/**
 *
 * @author Pablo
 */
public class Main {

    public static void main(String[] args) {
        UC uc = new UC();
        uc.principal();
    }
}
package ias_machine;

/**
 *
 * @author Pablo
 */
public class UC {
    ULA ula;
    Memoria mem;
    Manipula man;

void principal(){
        int n=0;
        String Inst;
        try{
        man.carregar("arquivo.txt");
        }
        catch(Exception e){
           System.out.println("ERROR!");
        }
        Inst=mem.getInstrucao(1);
        System.out.println(Inst);
}


void decodificador_instrucao(){
    for(int n=0;n<14;n++){
    System.out.println(mem.getMemoriaPrincipal(n));
}

}
}
package ias_machine;

/**
 *
 * @author Pablo
 */
public class Memoria {
private String instrucao[] = new String[20];
private int dados[] = new int[40];
private String memoria[] = new String[60];
private int adress;
private int adress1;

    public int getDados(int n) {
        return dados[n];
    }

    public void setDados(int dados,int n) {
        adress1++;
        this.dados[n] = dados;
    }

    public String getInstrucao(int n) {
       // System.out.println(instrucao[n]);
        return instrucao[n];
    }

    public void setInstrucao(String instrucao, int n) {
        adress++;
        this.instrucao[n] = instrucao;
    }

    public void setMemoriaPrincipal(){
        int cont=0;
        while(cont<adress){
        this.memoria[cont] = this.getInstrucao(cont);
        System.out.println(cont+" Instrucao: "+memoria[cont]);
        cont++;
        }
        cont=0;
        while(cont<adress1){
        this.memoria[adress]="";
        this.memoria[adress]+= this.getDados(adress);
        System.out.println(adress+" Dados: "+memoria[adress]);
        adress++;
        cont++;
        }

    }

    public String getMemoriaPrincipal(int n){
        return memoria[n];
    }

}
marcelo.bellissimo

Aposto que tá dando erro aqui…

man.carregar("arquivo.txt");

Você não instanciou ela, veja:

Memoria mem;
spurts

Na verdade o essa parte funciona normal… o erro da eh nessa parte

Inst=mem.getInstrucao(1);

quando eu chamo dados da memoria

marcelo.bellissimo

spurts:
Na verdade o essa parte funciona normal… o erro da eh nessa parte

Inst=mem.getInstrucao(1);

quando eu chamo dados da memoria

Ah sim, mas é o mesmo motivo, eu viajei em te apontar onde apenas… veja bem esse trecho:

try{ man.carregar("arquivo.txt"); } catch(Exception e){ System.out.println("ERROR!"); } Inst=mem.getInstrucao(1);

Na linha que eu mostrei dá erro, pode ver que no seu console vai sair a mensagem “ERROR!”, mas como você está tratando com um bloco de try/catch o programa não para a sua execução…

Agora nessa outra que você falou, dá erro também, e como ela não está dentro de nenhum bloco de tratamento de erro try/catch, o programa estoura o erro na sua cara… mas é o mesmo motivo, a classe não foi instanciada…

Dá uma revisada nesse fluxo aí… instancia a classe antes, e passa ela por parâmetro pras outras que irãoi usá-la…

spurts

Eu dei uma olhada no comando lah… e realmente nao da erro na parte do

man.carregar("arquivo.txt");

essa parte nem chega a ativar a exceçao…

o erro realmente soh se da qdu eu vou buscar os dados q eu gravei na memoria… ai da NULLPOINTEREXCEPTION

marcelo.bellissimo

spurts:
Eu dei uma olhada no comando lah… e realmente nao da erro na parte do

man.carregar("arquivo.txt");

essa parte nem chega a ativar a exceçao…

o erro realmente soh se da qdu eu vou buscar os dados q eu gravei na memoria… ai da NULLPOINTEREXCEPTION

Então tem alguma coisa bem errada aí… você não pode acessar nenhum método de uma classe que não foi instanciada…

Você está disparando o “main” da classe Main, né?

Dá uma debugada melhor aí nesse trecho, sua variável está nula e em algum ponto você está tentando acessar um método… e isso gera o NullPointerException…

Criado 7 de dezembro de 2010
Ultima resposta 7 de dez. de 2010
Respostas 8
Participantes 4