Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143

    Ricerca stringa in array

    Voglio scrivere un metodo che, dato un array di stringhe ordinato, e passando come parametro al metodo una stringa:
    - restituisca -10 se la stringa cercata è presente nell'array
    - inserisce la stringa cercata se non è presente nell'array e restituisce la posizione in cui l'ha inserita
    - lanci un'eccezzione se l'array è pieno.

    Io ho scritto questo ma non va..

    codice:
    import java.util.*;
    
    public class Array {
    
    	Scanner tast = new Scanner(System.in);
    
    	private String[] elementi;
    	private int numElementi;
    
    	public Array(String[] a, int i) {
    		elementi = a;
    		numElementi = 1;
    	}
    
    	public int aggiungiElem(String val) throws IllegalStateException {
    		int h = 0;
    		while(h < elementi.length) {
    			if(elementi[h].equals(val))
    				return -1;
    			else
    				h++;
    		}
    		int j = 0;
    		for(int i = 0; i < numElementi && elementi[i].compareTo(val) < 0; i++)
    			j = i + 1;
    		for(int i = numElementi; i > j; i--)
    			elementi[i] = elementi[i - 1];
    		elementi[j] = val;
    		return j;
    	}
    	
    }
    main
    codice:
    import java.util.Scanner;
    
    public class TestArray {
    
    	public static void main(String[] args) {
    
    		Scanner tast = new Scanner(System.in);
    
    		String[] a = {"c", "d", "e", "g", "o", "p", "r", "z"};
    
    		Array r = new Array(a, 15);
    
    		try {
    			System.out.println("Inserisci una stringa: ");
    			String s = tast.nextString();
    			a.inserisci(s);
    		} catch(IllegalStateException ecc) {
    			System.out.println("Array pieno");
    		}
    }
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    sono diverse le considerazioni che devi fare per poter risolvere questo problema: innanzi tutto vale quanto detto nell'altro thread: perché passi per un wrapper quando ti basta avere una istanza di String[]??
    seconda cosa, prima di fare l'inserimento ordinato, devi essere in grado di ordinare (cosa non vera), quindi non saltare passaggi.
    Terza cosa, l'inserimento ordinato prevede lo scorrimento dell'array. Significa che se tu hai un array di 100 posizioni e il tuo elemento va alla posizione 1, ne devi spostare ben 99. Inoltre se l'array è già pieno come ti comporti?
    Fermati un attimo e rifletti se è opportuno portarti dietro un array a dimensione fissa e se è opportuno istanziarne di nuovi per aumentarne la dimensione, spostando tutti gli elementi ad uno ad uno
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Originariamente inviato da valia
    sono diverse le considerazioni che devi fare per poter risolvere questo problema: innanzi tutto vale quanto detto nell'altro thread: perché passi per un wrapper quando ti basta avere una istanza di String[]??
    L'esercizio mi chiede di farlo in questo modo..

    seconda cosa, prima di fare l'inserimento ordinato, devi essere in grado di ordinare (cosa non vera), quindi non saltare passaggi.
    Ho un altro metodo che mi ordina l'array..

    Terza cosa, l'inserimento ordinato prevede lo scorrimento dell'array. Significa che se tu hai un array di 100 posizioni e il tuo elemento va alla posizione 1, ne devi spostare ben 99. Inoltre se l'array è già pieno come ti comporti?
    Fermati un attimo e rifletti se è opportuno portarti dietro un array a dimensione fissa e se è opportuno istanziarne di nuovi per aumentarne la dimensione, spostando tutti gli elementi ad uno ad uno
    Se l'array è pieno lancio l'eccezione.. Ma quello che non ho capito è: come controllo se l'array è pieno?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da vfldj
    Se l'array è pieno lancio l'eccezione.. Ma quello che non ho capito è: come controllo se l'array è pieno?
    devi tenere traccia del numero di elementi inseriti, diverso dal numero di elementi che è possibile inserire nell'array.
    In questo modo hai quanto ti serve per risolvere il problema
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Originariamente inviato da valia
    devi tenere traccia del numero di elementi inseriti, diverso dal numero di elementi che è possibile inserire nell'array.
    In questo modo hai quanto ti serve per risolvere il problema
    Ok quindi intendi che il num max di elementi che si possono inserire nell'array sono per es. 5 in questo caso, giusto?
    codice:
    Array r1 = new Array(a1, 5);

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    no il numero di elementi che puoi inserire in un array te lo dice l'array stesso (e non hai bisogno di una nuova variabile)
    Devi tenere traccia del numero di elementi inseriti nell'array.
    Questo viene aggiornato ogni volta che metti un elemento nell'array
    RTFM Read That F*** Manual!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    mmm ok..
    provo a farlo

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Io ho una domanda.
    Guardando il costruttore della tua classe Array

    codice:
    public Array(String[] a, int i) {
       elementi = a;
       numElementi = 1;
    }
    a che ti serve passare il secondo argomento ( i ), se poi assegni comunque 1 alla variabile "numElementi"?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da LeleFT
    Io ho una domanda.
    Guardando il costruttore della tua classe Array

    codice:
    public Array(String[] a, int i) {
       elementi = a;
       numElementi = 1;
    }
    a che ti serve passare il secondo argomento ( i ), se poi assegni comunque 1 alla variabile "numElementi"?


    Ciao.
    guarda l'altro suo thread, le ho già fatto questa osservazione
    RTFM Read That F*** Manual!!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    143
    Eh si è stato un errore di battitura, ho corretto con

    codice:
    public Array(String[] a, int i) {
       elementi = a;
       numElementi = i;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.