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

    Classico ezercizio universitario facciamone un applet

    Questo codice ci chiede una stringa e ne restituisce le lettere in ordine alfabetico saltando eventualmente gli spazi char(32)

    import java.io.*;

    class ordina {

    public static void main (String[] arg)throws Exception {

    BufferedReader br;
    InputStreamReader isr;
    isr = new InputStreamReader(System.in);
    br = new BufferedReader(isr);


    String nome, passaggio;
    passaggio = new String("ab");
    System.out.println("Inserisci");
    System.out.flush();
    nome = br.readLine();
    nome.toLowerCase();
    int f = nome.length();
    int g[] = new int[f];
    int h[] = new int[2];
    f = f-1;

    for (int a=0; a<=f; a++){
    g[a] = nome.charAt(a);
    }
    for (int q=0; q<=f; q++){
    int c = q+1;
    for (int b=c; b<=f; b++){
    if (g[q] >= g[b]){
    h[1] = g[q];
    g[q] = g[b];
    g[b] = h[1];

    }
    }
    }
    for (int m=0; m<=f; m++){


    System.out.print((char)(g[m]));

    }
    }
    }

    Adesso ne vorrei realizzare un applet cosa quasi fatta, ma ho un problema:

    come faccio ad assegnare ad un String un char ovvero io faccio
    String risultato = new String("");
    e poi man mano aggiungo i caratteri in ordine alfabetico quindi:

    risultato = risultato.concat((char)(g[m]));

    ma mi da errore coma faccio? ps tra poco posto il codice per l'applet.
    Ma perchè mi avete tolto oltre 400 messaggi?

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Per poter concatenare delle stringhe basta fare:
    codice:
    String msg = "Cia";
    msg += 'o';
    Potresti inserire il tuo codice tra i tag [ CODE] e [ /CODE], in modo da renderlo piu' leggibile? Come avrai notato cosi' non e' abbastanza fastidioso da interpretare.
    Ciao,
    Lorenzo

  3. #3
    Si ma il problema è che io prima faccio un array di int ovvero:
    codice:
    //do un TextField che si chiama nome 
    add(nome)
    
    class // eventi del pulsante....
    
    String nomericavatodaltextfield = new String(nome.getText());
    
    int f = nomericavatodaltextfield.lenght();
    
    //creo l'array per memorizzare il char di ogni lettera della stringa
    
    int[] g = new int[f];
    
    
    f -= 1;
    for (int a=0; a<=f; a++){
    
    g[a] = nome.charAt(a);
    
    }
    
    //quindi li ordino in ordine crescente
    
    poi
    
    String risultato = new String("");
    for (int b=0; b<=f; b++){
    risultato = risultato+((char)(g[b]));
    
    }
    e nella parte in rosso che il compilatore mi da dei problemi
    Ma perchè mi avete tolto oltre 400 messaggi?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Strano, la parte in rosso e' corretta, che problemi di da?
    Ciao,
    Lorenzo

  5. #5
    Mi da errore se al posto di

    risultato = risultato+((char)(g[b]));

    metto

    risultato = risulatato.concat((char)(g[b]));

    comunque ti posto il codice funzionante [Color=sky blue]finalmente[/color]

    codice:
    import java.io.*;
    import java.util.*;
    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;
    public class ordinaApplet extends Applet implements ActionListener {
    
    	public void init(){
    	Color back = new Color(204,0,0);
    	Color butt = new Color(204,204,136);
    	Color fore = new Color(6,33,51);
    	this.setBackground(back);
    	nome = new TextField(30);
    	nomelab = new Label("Inserisci Stringa");
    	calcButton = new Button("Ordina");
    	calcButton.setBackground(butt);
    	calcButton.setForeground(fore);
    	calcButton.addActionListener(this);
    	add(nomelab);
    	add(nome);
    	add(calcButton);
    	result = new Label ("");
    	add(result);
    	}
    
    	public void actionPerformed(ActionEvent event){
    
      String nomato = new String(nome.getText());
      String passaggio = new String("ab");
      nomato = nomato.toLowerCase();
    
      int f = nomato.length();
      int g[] = new int[f];
      int h[] = new int[2];
      f = f-1;
    
      for (int a=0; a<=f; a++){
        g[a] = nomato.charAt(a);
      }
      for (int q=0; q<=f; q++){
        int c = q+1;
        for (int b=c; b<=f; b++){
          if (g[q] >= g[b]){
            h[1] = g[q];
            g[q] = g[b];
            g[b] = h[1];
          }
        }
      }
      
      String nomatizzato = new String("");
      for (int m=0; m<=f; m++){
        if (g[m] != 32){
        nomatizzato = nomatizzato+((char)(g[m]));
    
    
        }
      }
      result.setText(nomatizzato);
      doLayout();
    }
    
      private Label nomelab, result;
      private String nomato, nomatizzato;
      private Button calcButton;
      private TextField nome;
      
    }
    Ciao e grazie
    Ma perchè mi avete tolto oltre 400 messaggi?

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.