Oppure

Loading
03/04/11 18:30
Fen24
File con il main ;


import java.io.*;
class M_shift_ver
{
	public static void main(String args[])
	{ 
		InputStreamReader In = new InputStreamReader (System.in);
	    BufferedReader T = new BufferedReader (In);
		int maxel,i=-1;
		char risp;
		
		
		try 
		{
			System.out.println("Inserire il numero massimo di elementi");
			maxel = Integer.parseInt(T.readLine());
			shift_ver v1 = new shift_ver(maxel);
			System.out.println("Scegli tra i/c/s/r/l/f");
			risp = T.readLine().charAt(0);
			while (risp != 'f')
			{
				switch(risp)
				{
					case 'i':
					{ 
					System.out.println("Chiama l'inserimento");
					if (i<maxel-1) 
					i= v1.carica(i);
					} break;
					case 'c': 
					{
					if (i>=0) i=v1.cancella(i);
					}break;
					case 's':
					{
					if (i>=0) v1.stampa(i);
					}break;
					case 'r':
					{   
					if (i>=0) v1.ricerca(i);
					} break;
					case 'l' :
					{
					if (i>=0)
					v1.cerca(i);
					} break;
					default: System.out.println("Inserimento nullo"); break;
				}
				System.out.println("Scegli tra i/c/s/r/l/f");
			    risp = T.readLine().charAt(0);
			}
		}
		catch(Exception E)
		{
			System.out.println("errore :" + E.getMessage());
			System.exit(1);
		}
	}D
}


File senza main

/*realizzare le seguenti funzioni 
memorizzare nome in ordine alfabetico 
cancellare nome
cercare tutti i nomi che iniziano con x e terminano con y 
main con possibilita' di iterare */

import java.io.*;
public class shift_ver
{
	
	private String nomi[];
	private  int maxel;

    //metodo costruttore
	public shift_ver(int N)
	{
		maxel = N;
		nomi = new String[N];
	}
    //carica 
	public  int carica(int i)
	{
		InputStreamReader In = new InputStreamReader(System.in);
		BufferedReader T = new BufferedReader(In);
		String nome = " ";
		int j,k;
		try 
		{
			System.out.println("Inserisci il nome");
			nome = T.readLine();
			j=0;
			while((j<=i) && (nome.compareTo(nomi[j])>0))
			 {
				 System.out.println("sono in while");
			 j++;
		     }
			if(j>i)
			{
				nomi[j] = nome; 
			}
			else 
			{ 
				for (k=i;k>=j;k--)
				nomi[k+1] = nomi[k];
				nomi[j] = nome;
			}
		i++;
		return(i);
	    }
	    
	  catch(Exception E)
	  {
		  int errore;
		  System.out.println("errore: " + E.getMessage());
		  errore = -1;
		  return(errore);
	  }
  }
  


	public  int cancella(int i)
	{ 
		InputStreamReader In = new InputStreamReader(System.in);
		BufferedReader T = new BufferedReader(In);
		String  nome;
		int j,k;
		try 
		{
			System.out.println("Inserisci il nome da cercare e cancellare");
			nome = T.readLine();
			j=0;
			while ((j<=i) && (nome.compareTo(nomi[j])>0))
			   j++; 
			if((j>i)||(nomi[j].compareTo(nome)>0))
				System.out.println("Non trovato");
				else 
				if(j==i)
				i--;
				else
				{ 
					for(k=j;k<=i;k++)
					nomi[k] = nomi[k+1];
					i--;
				}
			
			return(i);
		}
	catch(Exception E)
		{
			int errore;
			System.out.println("errore " + E.getMessage());
			System.exit(1);
			errore = -1;
			return(errore);
		} 
	}
	
	
	public  int stampa(int i)
	{
		int j;
		for(j=0;j<=i;j++)
		System.out.println(nomi[j]);
		return(j);
	}
	
	public  void ricerca(int i)
	{
		InputStreamReader In = new InputStreamReader(System.in);
		BufferedReader T = new BufferedReader(In);
		boolean trovato;
		String ric;
		int sup,inf,centro=0;
		try
		{
			System.out.println("Inserisci il nome che si desidera ricercare");
			ric = T.readLine();
			trovato = false;
			inf = 0;
			sup = i;
			while((inf<=sup) && (trovato == false))
			{
				centro = (sup+inf) / 2;
				if(ric.compareTo(nomi[centro]) == 0)
				trovato = true;
				else 
				if (ric.compareTo(nomi[centro])>0)
				inf = centro+1;
				else
				sup = centro-1;
					}
			if (inf > sup)
			System.out.println("Nome non trovato");
			else System.out.println("Nome " + ric + " trovato nella posizione " + centro);
		}
		catch(Exception E)
		{
			System.out.println("errore " + E.getMessage());
			System.exit(1);
		} 
	}  
	
	public void cerca(int i)
	{
		InputStreamReader In = new InputStreamReader(System.in);
		BufferedReader T = new BufferedReader(In);
		char x, y;
		
		try 
		{
			System.out.println("Inserisci la lettera iniziale di controllo");
			x = T.readLine().charAt(0);
			System.out.println("Inserisci la lettera finale di controllo");
			y = T.readLine().charAt(0);
			for (int j=0;j<=i;j++)
			{
			if ((nomi[j].charAt(0) == x) && (nomi[j].charAt(nomi[j].length()-1) == y))
			System.out.println("Il nome soddisfa i parametri impostati");
		    }			
	    }
	catch(Exception E)
	  {
		  int errore;
		  System.out.println("errore: " + E.getMessage());
		  errore = -1;
		  
	  }
	}
}

Salve sono nuovo del forum spero di non aver sbagliato niente nel postare.
Veniamo al problema;
Nel main non riesco ad implementare il caso 'l' dello swicht, quando compilo mi da errore e non capisco il motivo.

Inoltre non so se possibile ma non ho capito altre cose e avrei bisogno di una spiegazione.
Grazie :)
Ultima modifica effettuata da Fen24 03/04/11 18:32
aaa
04/04/11 12:27
Fen24
Nessuno mi può dare una mano?
Mi server per domani .-.
aaa