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
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;
}
}
classe collaudo (main)
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');
}
}