Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Vector;
- public class trasforma
- {
- int numero;
- int baseIniziale;
- int baseFinale;
- public trasforma(int numero, int baseIniziale, int baseFinale)
- {
- this.numero=numero;
- this.baseIniziale=baseIniziale;
- this.baseFinale=baseFinale;
- //creo un array alfabeto
- }
- public int getNumero()
- {
- return this.numero;
- }
- public int getBaseFinale()
- {
- return this.baseFinale;
- }
- public int getBaseIniziale()
- {
- return this.baseIniziale;
- }
- /*
- * CReo un metodo che mi permetta di traformare il numero in base inziale nel numero nella base finale
- * Solo che dovrò fare dei piccoli accorgimenti :
- * -dalla base 11, compresa, dovrò aggiungere le lettere
- */
- private String trasformazione()
- {
- String resto="";
- //Definisco un array che mi aiuti la lettura e la modifica di esso
- Vector restoComodo= new Vector();
- int comodo=0;
- int quoziente=numero;
- int posizione=0;
- if(numero==0)
- {
- return "Errore hai inserito numero nullo";
- }
- do
- {
- comodo=quoziente%baseFinale;
- quoziente=quoziente/baseFinale;
- restoComodo.add(comodo);
- }
- while(quoziente!= 0);
- /*
- * Richiamo un metodo che mi modifichi in base alla basefinale il resto
- */
- resto=modifica(restoComodo);
- return resto;
- }
- private String modifica(Vector restoArray)
- {
- String app="";
- /*
- * Definisco in due blocchi, base finale maggiore di 11 o base finale minore di 11
- */
- int c=0;
- if(baseFinale>=11)
- {
- c=1;
- }
- switch(c)
- {
- case 0:
- //richiamo metodo che controlla il numero in base alla base minore di 11
- app=minore11(restoArray);
- break;
- case 1:
- //richiamo metodo che modifica il numeor in base alla base maggiore di 10 massima di 36
- app=maggiore11(restoArray);
- break;
- }
- return app;
- }
- private String minore11(Vector Array)
- {
- String comodo="";
- int p=Array.size()-1;
- switch(baseFinale)
- {
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- for(int i=0;i<Array.size();i++)
- {
- comodo=comodo+Array.elementAt(p);
- p--;
- }
- break;
- }
- return comodo;
- }
- private String maggiore11(Vector Array)
- {
- String comodo="";
- int p=Array.size()-1;
- int c=0;
- //ora max base 16
- for(int i=0;i<Array.size();i++)
- {
- c=(Integer) Array.get(p);
- if(c>=10)
- {
- comodo=comodo+convertiNum(c);
- p--;
- }
- else
- {
- comodo=comodo+Array.elementAt(p);
- p--;
- }
- }
- return comodo;
- }
- private String convertiNum(int c1)
- {
- String fin="";
- int comodo=0;
- char [] alfabeto={'A', 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' };
- int [] supporto={ 10 ,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36};
- for(int i=0;i<letter();i++)
- {
- if(c1==supporto[i])
- {
- fin=fin+alfabeto[i];
- c1=-1;
- }
- }
- if(c1!=-1)
- {
- //ridivido il resto
- fin=fin+ricalcoloResto(c1);
- }
- return fin;
- }
- private String ricalcoloResto(int c2)
- {
- String fin="";
- int comodo=c2;
- int resto=0;
- Vector array =new Vector();
- int p1=array.size()-1;
- int p=0;
- do
- {
- resto=comodo%baseFinale;
- comodo=comodo/baseFinale;
- array.add(resto);
- p++;
- }while(comodo!=0);
- for(int j=0;j<array.size();j++)
- {
- fin=fin+array.elementAt(p1);
- p--;
- }
- return fin;
- }
- private int letter()
- {
- //restituisce la massima lettera che si può avere nella codifica
- int lett=baseFinale-10;
- return lett;
- }
- public String toString()
- {
- String resto="";
- String finale;
- resto=resto+trasformazione();
- finale=resto;
- return finale;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement