Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    40

    calcolatrice binaria

    è da giorni che tento di risolvere un problema.creare un programma che mi converta un numero intero in binario.quando schiaccio sul pulsante converti,il contenuto della Jtextfield 1 deve essere convertito in binario e messo nella jtextfield 2,ma nn va,cosa sbaglio??


    codice:
    import java.awt.event.*; 
    import java.awt.*; 
    import javax.swing.*;
    
     public class CalcolatriceBinaria 
    { 
    JButton pulsante1=new JButton("Converti"); 
    TextField testo1=new TextField(); 
    TextField testo2=new TextField(); 
    JPanel p1 = new JPanel(); 
    JPanel p2 = new JPanel(); 
    JFrame miafinestra = new JFrame("CalcolatriceBinaria"); 
    public CalcolatriceBinaria() { 
    p1.setLayout(new GridLayout(1, 1)); 
    p2.add(pulsante1); p2.add(testo1); 
    p2.add(testo2); 
    pulsante1.setBounds(10,30,60,30); 
    testo1.setBounds(80,30,60,30); 
    testo2.setBounds(150,30,80,30); 
    clicknum aggiungi = new clicknum();
     pulsante1.addActionListener(aggiungi); 
    testo1.addActionListener(aggiungi); 
    testo2.addActionListener(aggiungi); 
    miafinestra.setTitle("Binary Calculator by H"); 
    miafinestra.add(BorderLayout.NORTH,p1); 
    miafinestra.add(BorderLayout.CENTER,p2); 
    miafinestra.setSize(300,300); miafinestra.setVisible(true); } 
    
    public static void main(String []s) { 
    CalcolatriceBinaria prova=new CalcolatriceBinaria(); } 
    
    public class clicknum implements ActionListener{ 
    
    public void actionPerformed(ActionEvent e) { 
    
    String c=e.getActionCommand(); 
    String f=testo1.getText(); 
    int aInt,vet[]={}; 
    int resto,i;
     i=0; 
    String stringa=""; 
    aInt=Integer.parseInt(f); 
    while(aInt>=0){ 
    resto=aInt%2; 
    if(resto==0) 
    stringa=stringa+"0"; 
    if(resto==1) 
    stringa=stringa+"1"; 
    i++; 
    aInt=aInt/2;}  
    if(e.getSource()==pulsante1) { 
    testo2.setText(stringa); 
    } 
    }
    } 
    }

  2. #2
    Sicuramente devi fare meglio rispetto a ciò che hai fatto.
    Ad esempio potresti crearti 2 classi distinte:
    - Converter: che converte nel tuo caso un decimale in binario e/o viceversa.
    - MyGUI: la tua interfaccia nella quale vai a definire tutte le componenti e per il pulsante definisci il suo oggetto ActionListener (usando una inner-class, una classe anonima oppure facendo implementare direttamente alla tua classe MyGUI l'interfaccia).
    Nel tuo caso il metodo di ActionListener deve essere ri-definito così:
    codice:
    ...
    public void actionPerformed(ActionEvent e){
      if( e.getSource.equals( istanza tuo bottone ) ){
           //fai la conversione..
      }
    }
    ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    40
    scusa ma sono un newbie di java......non c'è un modo di risolvere il problema senza fare le classi distinte?cioè a me interessa che vada la conversione quando schiaccio il bottone....

  4. #4
    Originariamente inviato da hteo
    scusa ma sono un newbie di java......non c'è un modo di risolvere il problema senza fare le classi distinte?cioè a me interessa che vada la conversione quando schiaccio il bottone....
    A parte il fatto che la conversione è sbagliata. Comincia a correggere la parte logica del tuo programma.

    Nel precedente post ti ho scritto dove va messa la logica della conversione...e il problema dovrebbe risolversi
    codice:
    public void actionPerformed(ActionEvent e){
      if( e.getSource().equals( istanza tuo bottone ) ){
           //la conversione va calcolata per intero qui
           //una volta calcolato il risultato, lo passi al metodo setText() che chiami sulla tua istanza di JTextField
      }
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    40
    a me la logica sembra giusta....l'unico problema che mi manca da risolvere è come convertire da un array di interi a una stringa

    codice:
    if(e.getSource()==pulsante1) { 
    while(aInt>0)
    { 
    resto=aInt%2; 
    if(resto==0) 
    vet[i]=0; 
    if(resto==1) 
    vet[i]=1; 
    i++; 
    aInt=aInt/2;
    } 
    stringa =java.util.Arrays.toString(vet); 
    testo2.setText(stringa); 
    }

  6. #6
    Originariamente inviato da hteo
    a me la logica sembra giusta....l'unico problema che mi manca da risolvere è come convertire da un array di interi a una stringa
    In seguito alla pressione del bottone (dati corretti permettendo)
    codice:
    testo1.getText()
    ti restituisce una stringa che rappresenta il numero decimale da convertire in binario.
    Per trattarlo come numero intero ti basta utilizzare il seguente metodo statico messo a disposizione dalla classe Integer (classe wrapper del rispettivo tipo primitivo):
    codice:
    Integer.parseInt( testo1.getText() )
    Mentre per rappresentare il numero binario ti conviene usare un oggetto della classe StringBuffer o meglio ancora usare un oggetto che funzioni come una pila.

    Per quanto riguarda la parte logica della conversione:
    il ciclo è impostato bene, ma in esso fai dei controlli inutili e ci sta un errore.

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Piccola nota: è inutile usare il tag CODE se il codice non è indentato già in partenza... Così è illeggibile.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    40
    ho provato con la string buffer ma nulla,non me la prende nemmeno mi da errore....qualcuno con un po' di pazienza mi scrive il codice??

  9. #9
    Originariamente inviato da hteo
    ho provato con la string buffer ma nulla,non me la prende nemmeno mi da errore....qualcuno con un po' di pazienza mi scrive il codice??
    Posta il codice che ti da problemi e ti aiuto.

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da hteo
    ho provato con la string buffer ma nulla,non me la prende nemmeno mi da errore....qualcuno con un po' di pazienza mi scrive il codice??
    I 2 if sono inutili.

    codice:
    if(e.getSource()==pulsante1) {
      StringBuffer sb = new StringBuffer();
      while(aInt>0) { 
        resto=aInt%2; 
        sb.append(resto);
        aInt=aInt/2;
      } 
      testo2.setText(sb.toString()); 
    }

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.