evaluación prog iii try catch
DESCRIPTION
Segunda evaluación segundo corte Prog III 15%TRANSCRIPT
import java.util.Scanner;
public class Main {
static void rango(String numero)throws ExcepcionIntervalo{
for (int k=0;k<numero.length();k++){
if(numero.charAt(k)!='0' && numero.charAt(k)!='1'){
throw new ExcepcionIntervalo("Números no binarios o contiene caractéres alfabéticos");
}
}
}
public static void main(String[] args) {
boolean sw1;
String str1 = null,str2 = null;
Scanner teclado=new Scanner(System.in);
do {
sw1=true;
System.out.println("Escriba un numero binario ");
try {
str1=teclado.next();
rango(str1);
}
catch(ExcepcionIntervalo ex) {
String respuesta=ex.getMessage();
System.out.println("El error es "+respuesta);
sw1=false;
}
} while(sw1==false);
sw1=true;
do{
sw1=true;
System.out.println("Escriba otro numero binario ");
try {
str2=teclado.next();
rango(str2);
}
catch(ExcepcionIntervalo ex) {
String respuesta=ex.getMessage();
System.out.println("El error es "+respuesta);
sw1=false;
}
}while(sw1==false);
Resta s=new Resta();
int c=str1.length()-str2.length();
for(int b=0;b<c;b++)
str2='0'+str2;
System.out.println("El resultado de la Resta es " +
s.Sumar(str1,s.complementoaldos(s.complementoaluno(str2,str1.length()))));}
}
public class ExcepcionIntervalo extends Exception {
public ExcepcionIntervalo(String msg) {
super(msg);
}
public ExcepcionIntervalo() {}
}
public class Resta {
public int aNumero(char digito){
int dig = 0;
switch(digito) {
case '0': dig=0;
break;
case '1': dig=1;
break;
}
return dig;
}
public char aLetra(int digito){
char dig=' ';
switch(digito) {
case 0: dig='0';
break;
case 1: dig='1';
break;
}
return dig;
}
public String Sumar(String num1, String num2){
int c=0,cantidad=0,i,j;//acarreo
String resultado=""; //solucion de la suma
//para igualar el tamaño de las cantidades colcocamos 0 a la derecha
cantidad=num1.length()-num2.length();
for(i=0;i<cantidad;i++)
num2='0'+num2;
char let=' ';
int sol,tamano;
tamano=num1.length();
for (j=tamano-1;j>=0;j--){
sol=aNumero(num1.charAt(j))+aNumero(num2.charAt(j))+c;
if(sol>=2){
c=1;
sol=sol-2;
}
else
c=0;
let=aLetra(sol);
resultado=let+resultado;
}
String solu=resultado;
return solu;
}
}
public String complementoaluno(String n,int tamano) {
String salida="";
for (int h=0;h<tamano;h++) {
if (n.charAt(h)=='0')
salida=salida +'1';
if (n.charAt(h)=='1')
salida=salida +'0';
}
return salida;
}
public String complementoaldos(String n) {
return Sumar(n,"1");
}
public String restar(String n1, String n2) {
return Sumar(n1,complementoaldos(complementoaluno(n2,n1.length())));
}
}
Este programa permite restar dos números binarios por complemento al dos, y captura errores al
incluir los datos. Usted va a corregir posibles errores de sintaxis y a explicar cómo realiza la resta y
le va a agregar otro método para lanzar otra excepción, cuando el sustraendo es mayor que el
minuendo el resultado sería negativo, con un método que lance la excepción a la misma clase
(ExcepcionIntervalo) va a enviar el mensaje de error “sustraendo mayor que minuendo”, y va a
evitar que se generen resultados negativos.
Equipo de dos personas
15%
Entrega del programa corriendo 27/11 turno tarde (Pto de control el lunes anterior).
02/12 turno noche(Pto de control el martes anterior)