ESERCIZIO 1 l’utente scrive dei caratteri dalla tastiera, si vuole contare il numero di a e di b scritte e stamparne il numero a video e’ corretto questo codice ?? //FILE Conta.java import java.*; import java.io.*; class Conta { public static void main(String[] args) { int a=0; byte b[]=new byte[1]; String s=new String(); int count =0; do { a = System.in.read(b,0,1); // MANCA GESTIONE DI ECCEZIONI: s=new String(b,0,1); if( s.equals(new String("a")) && s.equals(new String("b")) ) // CI VUOLE OR || count++; } while(a != -1); System.out.println("count="+count); } } // ESERCIZIO 1: CODICE CORRETTO, file Conta.java import java.*; import java.io.*; class Conta { public static void main(String[] args) { int a=0; byte b[]=new byte[1]; String s=new String(); int count =0; do { try { a = System.in.read(b,0,1); } catch (IOException e) { System.out.println("ERRORE”); return; }; s=new String(b,0,1); if( s.equals(new String("a")) || s.equals(new String("b")) ) count++; } while(a != -1); System.out.println("count="+count); } } ESERCIZIO 2: Cosa succede se: il file input.txt e’ fatto cosi’: la donzelletta vien dalla campagna e voi lanciate l’esecuzione java Conta < input.txt viene stampato a video count=7 ESERCIZIO 3 Cosa succede se il file input.txt e’ fatto cosi’: mamma celle strada e voi lanciate l’esecuzione: java Leggi < input.txt dove il file Leggi.java e’ quello qui di seguito ? import java.*; import java.io.*; class Leggi { public static void main(String[] args) { int a=0; byte b[]=new byte[10]; int letti=0; do { try { } { a = System.in.read(b,letti,10-letti); catch (IOException e) System.out.println("ERRORE DI LETTURA"); return; }; if(a>=0) letti+=a; } while( (a != -1) && (letti<10) ); byte bytea[]=new String("a").getBytes(); byte byteb[]=new String("b").getBytes(); int i=0; int count =0; for(i=0;i<letti;i++) if( (b[i]==bytea[0]) || (b[i]==byteb[0]) ) count++; System.out.println("count="+count); } } risposta: viene stampato a video count=3 ESERCIZIO 4 Scrivere una funzione, che legga da tastiera i primi 20 caratteri o quelli disponibili prima della fine dell’input e restituisca una stringa che contiene tutti i caratteri ricevuti in posizione pari. import java.*; import java.io.*; soluzione: class PrendiPari { public string funz() { int a=0; byte b[]=new byte[10]; int letti=0; for(letti=0;letti<20;letti++) { try { a = System.in.read(b,letti/2,1 ); } catch (IOException e) { System.out.println("ERRORE DI LETTURA"); return; }; } // System.out.println("count="+ new String(b) ); return( new String(b) ) } } ESERCIZIO 5 E’ corretto il codice java qui di seguito riportato? Se necessario correggerlo. Cosa fa? File A.java Class A // class va minuscolo { Public A() // public va minuscolo { } Private int somma(int val) // private va minuscolo { return val+10; } } File B.java Import java.*; // import va minuscolo Class B // class va minuscolo { Public static void main( string[] args) // private va minuscolo, string va Maiuscolo { A a; // non inizializzato, A a=new A(); System.out.println(a.somma(11)); // a.somma e’ private, errore in compilazione } } // stampa 21 ESERCIZIO 6 E’ corretto il codice java qui di seguito riportato? Se necessario correggerlo. Cosa fa? File A.java class A { public int somma(int val) { return val+10; } } // va cosi public static int somma(int val) File B.java import java.*; class B { public static void main( String[] args) { // non-static method somma(int) cannot be referenced from a static context System.out.println( A.somma(11)); } } // stampa 21 ESERCIZIO 7 E’ corretto il codice java qui di seguito riportato? Se necessario correggerlo. Cosa fa? File A.java class A { public static int somma(int val) { return val+10; } public static int divisione(int val) // metti double { return val/2.0; } // 2.0 e’ un double, errore in compilazione // dice required int // per ottenere la divisione devo far restituire double } File B.java import java.*; class B { public static void main( String[] args) { System.out.println( A.divisione(A.somma(11)) ); } } // stampa 10.5