1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

O que tem de errado este programa? (java)

Discussão em 'Programação' iniciada por A-Pock, 13 de Janeiro de 2008. (Respostas: 8; Visualizações: 1085)

  1. Tenho andado a brincar com o swing no java e estava a tentar fazer uma calculadora, algo muito simples apenas pra ver se funciona e cheguei a isto:

    Código:
     import javax.swing.*;
    
    public class teste{
        
    
    public teste() {
    }
        
        public static void main(String[] args) {
            
            
            double r=0;
            String op;
            int n1=Integer.parseInt(JOptionPane.showInputDialog("Qual o 1º numero?"));
            int n2=Integer.parseInt(JOptionPane.showInputDialog("Qual o segundo numero?"));
            op=JOptionPane.showInputDialog("Qual a operação? (*,/,+,-)");
            if (op=="*")
            {
                r=n1*n2;
                JOptionPane.showMessageDialog(null, "o resutado é:"+r);
            }
            else
            {
                if(op=="+")
                {
                    r=n1+n2;
                    JOptionPane.showMessageDialog(null, "O resultado é:"+r);
                }
                else
                {
                    if(op=="-")
                    {
                        r=n1-n2;
                        JOptionPane.showMessageDialog(null, "O resultado é:"+r);
                    }
                    else
                    {
                        r=n1/n2;
                        JOptionPane.showMessageDialog(null, "O resultado é:"+r);
                    }
                }
            }
        }
    
    }
    Eu sei que não tem validações e os calculos só funcionam para numeros inteiros etc mas como disse isto foi só para testar.
    O que acontece é que isto não dá erro de compilação mas também não corre, estou a usar o eclipse, alguma ajuda? :cool:
     
    Última edição: 13 de Janeiro de 2008
  2. legerdemain

    legerdemain Power Member

    1º, em java, os nomes das classes são capitalizados

    2º, identa essa maravilha e usa a tag
    Código:
    , depois volta a perguntar
     
    Última edição pelo moderador: 13 de Janeiro de 2008
  3. legerdemain

    legerdemain Power Member

    isso está mal identado, mas já se percebe alguma coisa..

    1º (blablabla)
    2º, precisas de uma frame (uma janela) para o que queres fazer
    a utilização dos métodos showBlahblah não mostram coisa alguma porque não tens um contentor onde os mostrar; podes resolver isso derivando de JFrame
    3º, tratado isso, crias uma instância e fazes .setVisible(true) e já te vai aparecer as dialog boxes
    4º, testei essa treta com 1 2 + e o resultado foi 0.0, não aprendas a programar que não é preciso :joker::joker: (e o teu código está horrível, recomendo-te leres uns livros/tutoriais antes de continuares a estragar a humanidade com o teu código)

    Abraços, presty :joker:
     
    Última edição pelo moderador: 13 de Janeiro de 2008
  4. rj.rodrigues

    rj.rodrigues Power Member

    Código:
    import javax.swing.*;
    
    public class teste {
    
        public static void main(String[] args) {
            double r = 0;
            String op;
            double n1 = Double.parseDouble(JOptionPane.showInputDialog("Qual o 1º numero?"));
            double n2 = Double.parseDouble(JOptionPane.showInputDialog("Qual o segundo numero?"));
            op = JOptionPane.showInputDialog("Qual a operação? (*,/,+,-)");
            if (op.equals("*")) {
                r = n1 * n2;
                JOptionPane.showMessageDialog(null, "o resutado é:" + r);
            } else {
                if (op.equals("+")) {
                    r = n1 + n2;
                    JOptionPane.showMessageDialog(null, "O resultado é:" + r);
                } else {
                    if (op.equals("-")) {
                        r = n1 - n2;
                        JOptionPane.showMessageDialog(null, "O resultado é:" + r);
                    } else {
                        r = n1 / n2;
                        JOptionPane.showMessageDialog(null, "O resultado é:" + r);
                    }
                }
            }
        }
    }
    ta a funfar
     
    Última edição: 13 de Janeiro de 2008
  5. Obrigado, já tou a perceber onde estavam os erros :beerchug:
     
  6. rj.rodrigues

    rj.rodrigues Power Member

    Não tinha nenhum erro.
    Só se for o eclipse k n deixa correr com o == em x de equals, foi a unica coise que alterei (para além do double n1 , n2).

    Agora tens k por o programa rubusto, tens k por restriçoes ....
     
  7. não nada disso, como disse no post inicial só criei este prog pra testar o swing uma vez que ainda me estou a familiarizar com o java, (a calculadora é tipo o meu programa de diagnostico quando começo com uma linguagem nova) por isso é que disse logo que não tinha posto validações nem doubles nas variaveis, muito menos criar codigo decente:cool:.

    Eu realmente tive logo a impressão que fosse do compilador o facto do programa não correr mas já estou habituado ao eclipse de o usar pra compilar C.

    Recomenda-se algum compilador que seja mais user friendly no caso do java?
     
    Última edição: 13 de Janeiro de 2008
  8. IcePicK

    IcePicK Power Member

    Não é o eclipse que não deixa utilizar == em vez de equals! Isso é mesmo uma imposição do Java. Esses operadores verificam se são exactamente os mesmos objectos!

    Por exemplo:

    Código:
    String a = new String("Techzone");
    String b = new String("Techzone");
    
    boolean x = a == b; 
    boolean y = a == a;
    
    System.out.print("x=" + x + ", y=" +  y); //x=false, X=true
    Edit:

    Já agora, existe uma maneira de comparar Strings com ==, mas actualmente isso não tem vatagens nenhumas. Talvez já tenha tido no passado com as VMs antigas.

    Tal como diz na API do Java,
    Ficando assim:
    Código:
    String a = new String("Techzone");
    String b = new String("Techzone");
    
    boolean x = a == b; 
    boolean y = a == a;
    boolean z = a.intern() == b.intern();
    
    System.out.print("x=" + x + ", y=" +  y + ", z=" +  z); //x=false, y=true, z=true
    De qualquer modo, o aconcelhado é o uso do equals.
     
    Última edição: 13 de Janeiro de 2008
  9. rj.rodrigues

    rj.rodrigues Power Member

    Pois eu sempre usei o equals por isso n sabia se funcionava ou n com ==
     

Partilhar esta Página