in un esercizio viene richiesto di creare un array dinamico dove si possano inserire dati di tipo int in un array, di vedere se l'array è ordinato e inoltre di creare un secondo array ove siano eliminati i doppioni del caso. inoltre bisogna farne il collaudo con 2 array dati dal prof. Il problemi sono un paio, tanto per cominciare ogni volta che faccio una scelta dal menù, il menù stesso viene stampato all'incirca dalle 3-4 volte. inoltre volendo popolare l'array in automatico mi da index out of bound e non riesco a capire dove sta l'errore. se qualcuno dall'occhio esperto mi riesce a farmi capire dove sbaglio glie ne sarei veramente grato
p.s. ho diviso i metodi da una parte e il main da un'altra perchè mi è stato richiesto così. inoltre non ci sono sono metodi privati poichè non richiesti
classe funzioni
classe collaudo (main)codice:import java.io.*; public class funzioni { public static void menù(){ System.out.println("scegliere tra una delle seguenti opzioni"); System.out.println("1. Ordina Array"); System.out.println("2. Determinare se l'array è crescente"); System.out.println("3. Eliminare doppioni nell'array"); System.out.println("4. Popola array con il caso A"); System.out.println("5. Popola array con il caso b"); System.out.println("6. Inserire dati da tastiera"); System.out.println("Premere '0' per uscire dal programma"); System.out.println(" "); } public static int[] popolaArray1(int a[]){ int [] array1 = {58, 10, 32, 21, 10, 32, 14, 56}; int [] z = new int[array1.length+1]; for(int i=0; i<a.length; i++){ z[i]=a[i]; } return z; } public static void stampaArray (int []a){ for(int i=0; i<a.length; i++){ System.out.println("Elemento array "+(i+1)+" :"+a[i]); } } public static int[] insert(int []a) throws IOException{ String temp; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for(int i=0; i<a.length ; i++){ System.out.println("inserire "+(i+1)+" elemento array (solo numeri interi"); temp =br.readLine(); a[i]=Integer.parseInt(temp); } return a; } public static void ordine(int []a){ for(int i=0; i< a.length; i++){ if(a[i]<=a[i+1])System.out.println("array ordinato in maniera crescente"); else System.out.println("array ordinato in maniera non crescente"); } } public static int [] eliminaDoppioni(int []a){ int m = a.length; int [] z = new int [m]; for(int i=0; i<a.length; i++){ for (int j =i+1; j< a.length; j++){ if(a[i] == a[j]){ i++; m=m-1; } else z[i]=a[j]; } } return z; } }
codice:import java.io.*; public class collaudo { public static void main(String args[]) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int m=0; int temp; int [] a = {58, 10, 32, 21, 10, 32, 14, 56}; int [] b = {13, 27, 27, 32, 56, 56, 56}; int [] z = new int[10]; char choice; do{ for(;;){ funzioni.menù(); choice = (char) br.read(); switch (choice){ case '0': System.out.println("Programma terminato correttamente"); break; case '1': funzioni.stampaArray(z); break; case '2': funzioni.ordine(z); break; case '3': funzioni.eliminaDoppioni(z); break; case '4': m=a.length; for(int i=0; i<a.length; i++){ z[i]=a[i]; } funzioni.stampaArray(z); break; case '5': m=b.length; for(int i =0; i<b.length; i++){ z[i]=b[i]; } funzioni.stampaArray(z); break; case'6': System.out.println("inserire dimensione array"); temp= br.read(); m=m+temp; funzioni.insert(z); break; } } }while(choice=='\n'||choice=='\r' && choice !='0'); } }

Rispondi quotando