Esercizio 2
Realizza un programma che ricevuto in ingresso un numero del sistema numerico decimale lo trasformi in binario, rappresentandone la forma in complemento a uno e in complemento a due .
Possiamo creare la classe time che avrà come attributi il luogo, l'ora e i minuti di una data città. Poi possiamo creare un arraylist delle istanze della classe time: Una versione ampiamente migliorabile di questo programma è la seguente: .
import java.io.*;
import java.util.ArrayList;
class fusiorari {
public static void main (String[] args) throws IOException{
InputStreamReader input=new InputStreamReader(System.in);
BufferedReader h= new BufferedReader(input); char ch;
ArrayList A=new ArrayList(2);
do{
System.out.println("X]EXIT");
System.out.println("A]Carica lista");
System.out.println("B]Stampa lista");
System.out.println("C]Modifica orario");
System.out.println("D]Inserisci orario");
ch=h.readLine().trim().charAt( 0 );
ch=Character.toUpperCase(ch);
switch(ch){
case 'A':carica(A);break;
case 'B':stampa(A);break;
case 'C':modifica(A);break;
case 'D':inserisci(A);break;
default:if(ch!='X')
System.out.println("Opzione non valida");
} // fine switch
}while(ch!='X');
} //fine main
static void carica(ArrayList B)throws IOException{
String xl;
int xo,xm,i;
InputStreamReader input=new InputStreamReader(System.in);
BufferedReader h= new BufferedReader(input);
do{
System.out.print("ins.luogo:");
xl=h.readLine();
if(xl.length()==0)break;
System.out.print("ins.ora:"); xo=Integer.parseInt(h.readLine().trim());
System.out.print("ins.min:");
xm=Integer.parseInt(h.readLine().trim());
time t=new time(xl,xo,xm);
B.add(t);
}while(xl.length()!=0);
}//fine carica
static void stampa(ArrayList B){
for(int i=0;i < B.size();i++)
System.out.println(i+"]"+B.get(i));
System.out.println("\nsize:"+B.size());
}//fine stampa
static void modifica(ArrayList B)throws IOException{
InputStreamReader input=new InputStreamReader(System.in);
BufferedReader h= new BufferedReader(input);
String xl;
int xo,xm,i;
System.out.print("ins.indice:"); i=Integer.parseInt(h.readLine().trim());
System.out.print("ins.luogo:");
xl=h.readLine();
System.out.print("ins.ora:");
xo=Integer.parseInt(h.readLine().trim());
System.out.print("ins.min:");
xm=Integer.parseInt(h.readLine().trim());
if(xl.length()!=0) {
time t=new time(xl,xo,xm); B.set(i,t);
}//fine if
}//fine modifica
static void inserisci(ArrayList B)throws IOException{
InputStreamReader input=new InputStreamReader(System.in); BufferedReader
h= new BufferedReader(input);
String xl;
int xo,xm,i;
System.out.print("ins.indice:");
i=Integer.parseInt(h.readLine().trim());
System.out.print("ins.luogo:");
xl=h.readLine();
System.out.print("ins.ora:");
xo=Integer.parseInt(h.readLine().trim());
System.out.print("ins.min:");
xm=Integer.parseInt(h.readLine().trim());
if(xl.length()!=0) {
time t=new time(xl,xo,xm);
B.add(i,t);
}//fine if
}//fine modifica
} //fine classe fusiorari
class time {
String luogo;
private int ore;
private int min;
public time() {this("milano",0,0);}
public time(String l,int o, int m) {
if (isT(o,m)) {
luogo=l;
ore = o;
min = m;
} else {
System.out.println("Errore");
luogo="milano";ore = 0; min = 0;
} //fine else
}//fine costruttore
public boolean isT(int o, int m) {
return (o > =0 && o < =24 && m > =0 && m
< =60 );
}
public void setT(String l,int o, int m) {
if (isT(o,m)) { luogo=l; ore = o; min = m; }
else System.out.println("Errore");
}//fine setT
public String getLuogo() {return luogo;}
public int getOre() {return ore;}
public int getMin() {return min;}
public String toString() {
return getLuogo()+":"+getOre()+":"+getMin(); }
}//fine classe time