excecao

Propaganda
//Classe principal, Arquivo Principal.java
class Principal {
public static void main(String args[]) {
int a[]=new int[4];
try {
a[4]=10;
//linha acima gera excecao, os indices validos sao quatro:0,1,2,3
//qualquer codigo escrito aqui (depois de a[4]=10;)
//nunca sera executado
System.out.println("Passou por aqui???");
}
catch(Exception ae) {
//refaz a pergunta do indice a acessar ao usuario
//e descrobre que ele queria acessar o indice 3 e escrever 12
a[3]=12;
}
System.out.println(a[3]);
}
}
public class DivisaoPorZero extends Exception
{
//public String info;
public DivisaoPorZero(String i)
{
//info=i;
}
}
// Adaptado de:
//
TUTORIAL:"A LINGUAGEM DE PROGRAMAÇÃO JAVA"
//
ORIENTAÇÃO A OBJETOS
//
Instituto de Computação
//
junho, 96
//
André Augusto Cesta. [email protected]
//
Orientadora: Profa Dra Cecília Mary Fischer Rubira
//
//Classe principal Arquivo Principal.java
//
//TAD fracao.
//Arquivo Fracao.java
class Fracao {
private int num,den; //numerador, denominador
private int mdc(int n,int d)
//metodo private maximo divisor comum
//metodo de Euclides +- 300 anos AC.
{ if (n<0) n=-n;
if (d<0) d=-d;
while (d!=0){
int r=n % d; //%=MOD=Resto da divisao inteira.
n=d;
d=r;
}
return n;
}
public Fracao(int t,int m) //construtor comum
{ num=t;
den=m;
this.simplifica(); //chamada para o mesmo objeto.
}
public void simplifica() //divide num e den pelo mdc(num,den)
{ int commd;
commd=mdc(num,den); //divisor comum
num=num/commd;
den=den/commd;
if (den<0) {
den=-den;
num=-num;
}; //move sinal para cima
}
//operacoes matematicas basicas
public Fracao soma (Fracao j)
{ Fracao g;
g=new Fracao((num*j.den)+(j.num*den),den*j.den);
return g;
}
public Fracao multiplicacao(Fracao j)
{ Fracao g;
g=new Fracao(num*j.num,den*j.den);
return g;
}
public Fracao divisao(Fracao j) throws DivisaoPorZero
{
Fracao g;
if (j.den==0) throw new DivisaoPorZero("Na classe Fracao");
//se for zero a execucao nao chega aqui
g=new Fracao(num*j.den,den*j.num);
return g;
}
//operacoes de comparacao
public boolean igual(Fracao t)
{ return ((num*t.den)==(den*t.num)); }
public boolean diferente(Fracao t)
{ return ((num*t.den)!=(den*t.num)); }
public boolean maiorouigual(Fracao t)
{ return ((num*t.den)>=(t.num*den)); }
//operacoes de input output
public void mostra() //exibe fracao no video
{ System.out.println("(" + num + "/" + den + ")"); }
//operacoes de conversao de tipos
public double convertedbl() //converte para double
{ double dbl; dbl=((double)num/(double)den);
return dbl;
}
public int converteint() //converte para int
{ int itng; itng=num/den; return itng; }
public void altera_num(int nn) { num=nn; }
public void altera_den(int nd) { den=nd; }
public int retorna_num() { return num; }
public int retorna_den() { return den; }
}
class Principal {
public static void main(String args[])
{
Fracao a,b,c;
a=new Fracao(5,3);
b=new Fracao(2,0);
System.out.print("Esta e' a fracao a: ");
a.mostra();
System.out.print("Esta e' a fracao b: ");
b.mostra();
try {
c=a.divisao(b);
c.mostra(); // não executa se ocorrer a exceção!!!
}
catch(DivisaoPorZero minhaexcecao)
{
System.out.println("Nao posso dividir por zero");
}
}
}
Download