Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [java]Mi controllate questo programma?

    codice:
    class SortString{
    	public static void main(String args[]){
    		String parole[] = {"ciao","culo","piero","simone","antonio","come","anna","annalisa"};
    		parole = ordina(parole);
    		for(int i = 0;i<parole.length;i++){
    			System.out.println(parole[i]+",");
    		}
    	}
    	static int differ(String a,String b,int i){
    		char c,d;
    		if(a.length() == i || b.length() == i){
    			if((a.length() > b.length()) == true){
    				return 0;
    			}else{
    				return 1;
    			}
    		}
    		c = a.charAt(i);
    		d = b.charAt(i);
    		if( c  == d){
    			return -1;
    		}else {
    			if((c > d) == true){
    				return 0;
    			}else{
    				return 1;
    			}
    		}
    	
    	}
    	static String[] ordina(String p[]){
    		String temp;
    		char c,d;
    		for(int i = 0;i<p.length;i++){
    			for(int j = 0;j<p.length;j++){
    				int u = 0;
    				while(differ(p[i],p[j],u) == -1){
    					u++;
    				}
    				if(differ(p[i],p[j],u) == 1){
    					temp = p[j];
    					p[j] = p[i];
    					p[i] = temp;
    				}
    			}
    		}
    		return p;
    	}
    }
    questo semplice programmino serve per ordinare un array di stringhe...se si può fare in modo più semplice sono lieto di sapere come!

    comunque, volevo sapere perchè le due funzioni differ e ordina devo dichiarale static, altrimenti il compilatore mi da un errore...
    eXtending-Php.net coming soon ...

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Rispota 1) Per confrontare se una stringa viene prima di un altra, secondo un criterio da te scelto, di solito si procede confrontando le due stringhe carattere per carattere.
    Ad esempio se le vuoi ordinare in ordine alfabetico prendi il primo carattere della stringa A e il primo carattere della stringa B, li chiamo A0 e B0. Se A0 < B0, la stringa A viene prima della B, viceversa se A0 > B0, B viene prima di A. Se i cue caratteri sono uguali, passi al carattere successivo.
    Se, as esempio, volessi confrontare CASA e CANE i passaggi sarebbero 3:
    A0 = B0
    B1 = B1
    A0 < B0
    risulta che CANE viene prima di CASA, la differenza sta nel terzo carattere. Ricorda, prima di fare il confronto tra due generici caratteri, che se una della due stringhe non ha il carattere di confronto (perche' ha meno caratteri dell'altra) viene automaticamente prima (in ordine alfabetico). Cioe' PASSA viene prima di PASSAGGIO, e te ne accorgi al 6 confronto.
    Chiaramente se vuoi un altro tipo di criterio per l'ordinamento ti devi regolare di conseguenza, ma il concetto rimane.
    Infine, per confrontare piu' di due stringhe puoi utilizzare il metodo di cui sopra, con un comune algoritmo di ordinamento.

    Risposta 2)
    Il programma che hai fatto tu assomigli molto a C compilato in java , ricorda che i due linguaggi sono molto diversi.
    Comunque il compilatore ti da errore perche' nel metodo main non costruisci nessun oggetto, quindi i due metodi che usi per ordinare le stringhe non sono ancora caricati in memoria quando esegui il main, a meno di non dichiararli static come dice il compilatore.
    Per ovviare alla cosa dovresti dichiarare un oggetto di tipo SortString ed invocare su di esso i metodi ordina e differ.
    Ciao,
    Lorenzo

  3. #3
    ok, ricevuto!
    eXtending-Php.net coming soon ...

  4. #4
    se quello che hai proposto non è solo un esercizio, puoi utilizzare le funzioni di java..
    poiche èdevi fare un'ordinamento di stringhe, nella classe stringa esiste il metodo compareTo(String), che nei comportamenti è uguale alla tua funzione differ.

    sempre utilizzando invece "robe già fatte", esiste invece Arrays.sort(Object[]), che prende per parametro un array di oggetti e te lo restituisce ordinato
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

  5. #5
    era un esercizio che dopvevo fare, comunque grazie del suggerimento
    eXtending-Php.net coming soon ...

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.