2014-12-19 4 views
0

Java를 배우고 있으며 추가, 나누기, 곱하기 및 재설정 기능이있는 계산기 Java 애플릿을 만들 계획입니다. 일부 경고가 서명 당함 : 유형 문자열에서경고 : 정적 방법으로 정적 메서드에 액세스해야합니다.

정적 메소드 valueOf (더블) 계산기 그래도 노력하고 정적 인 방법

에 액세스 할 수 있어야합니다. 그러나 친절하게도이 경고 기호를 피할 수있는 방법에 대한 전문 지식과 코딩 개선 사항을 찾아야합니다.

청취자, 수학 함수가 포함 된 CalEngine 클래스입니다.

parent.setScreen(equalnum.valueOf(totalnum)); 

당신은 String 객체 (equalnum)의 인스턴스에 정적 메소드 valueOf를 호출하고 있습니다 :

public class CalEngine implements ActionListener{ 

    Calculator parent; 
    double current=0; 
    double prevnum=0; 
    double totalnum=0; 
    int funct=0; 
    String equalnum; 
    public CalEngine(Calculator parent) { 
     this.parent = parent; 
    } 


    public void actionPerformed(ActionEvent e) { 

    JButton src = (JButton) e.getSource(); 
    String cbuttonlabel = src.getText(); 
    if(cbuttonlabel.equals("+")) 
     {  clearscreen(); 
       funct = 1;  } 
    else if(cbuttonlabel.equals("-")) 
    {  clearscreen(); 
      funct = 2;   } 
    else if(cbuttonlabel.equals("/")) 
    {  clearscreen(); 
      funct = 3;   } 
    else if(cbuttonlabel.equals("=")) 
    { equal();    } 
    else if(cbuttonlabel.equals("Reset")) 
    { prevnum = 0; 
     current = 0; 
     totalnum =0; 
     clearscreen(); 
    } 
    else 
     { 
     prevnum = current; 
     current = Double.parseDouble(cbuttonlabel); 
     parent.setScreen(cbuttonlabel); 
     } 
    } 

    private void equal() { 
     if(funct == 1) 
     { 
      add(); 
     } 
     else if(funct == 2) 
     { 
      minus(); 
     } 
     else if(funct == 3) 
     { 
      divide(); 
     } 
     parent.setScreen(equalnum.valueOf(totalnum)); 
     totalnum =0; 
    } 

    private void minus() { 
     totalnum = prevnum-current;} 

    private void divide() { 
     totalnum = prevnum/current; } 

    private void clearscreen() { 
     parent.setScreen(""); } 

    private void add() { 
     totalnum = current + prevnum; 
    } 

} 



Calculator UI 

public class Calculator { 

    JPanel ova; 
    JPanel pan; 
    JTextField screen; 
    JButton b1; 
    JButton b2; 
    JButton b3; 
    JButton b4; 
    JButton b5; 
    JButton b6; 
    JButton b7; 
    JButton b8; 
    JButton b9; 
    JButton b0; 
    JButton bplus; 
    JButton bequal; 
    JButton bminus; 
    JButton bdivide; 
    JButton breset; 

    Calculator(){ 

     ova = new JPanel(); 
     BorderLayout bl = new BorderLayout(); 
     ova.setLayout(bl); 

     screen = new JTextField(300); 
     ova.add("North",screen); 

     b1 = new JButton("1"); 
     b2 = new JButton("2"); 
     b3 = new JButton("3"); 
     b4 = new JButton("4"); 
     b5 = new JButton("5"); 
     b6 = new JButton("6"); 
     b7 = new JButton("7"); 
     b8 = new JButton("8"); 
     b9 = new JButton("9"); 
     b0 = new JButton("0"); 
     bplus = new JButton("+"); 
     bequal = new JButton("="); 
     bminus = new JButton("-"); 
     bdivide = new JButton("/"); 
     breset = new JButton("Reset"); 

     pan = new JPanel(); 
     GridLayout gl = new GridLayout(5,3); 
     pan.setLayout(gl); 

     pan.add(b1); 
     pan.add(b2); 
     pan.add(b3); 
     pan.add(b4); 
     pan.add(b5); 
     pan.add(b6); 
     pan.add(b7); 
     pan.add(b8); 
     pan.add(b9); 
     pan.add(b0); 
     pan.add(bplus); 
     pan.add(bequal); 
     pan.add(bminus); 
     pan.add(bdivide); 
     pan.add(breset);   

     ova.add("Center",pan); 

     JFrame jf = new JFrame("Calculator"); 

     jf.setContentPane(ova); 
     jf.setVisible(true); 
     jf.setSize(500,500); 

     CalEngine calcEngine = new CalEngine(this); 
     b0.addActionListener(calcEngine); 
     b1.addActionListener(calcEngine); 
     b2.addActionListener(calcEngine); 
     b3.addActionListener(calcEngine); 
     b4.addActionListener(calcEngine); 
     b5.addActionListener(calcEngine); 
     b6.addActionListener(calcEngine); 
     b7.addActionListener(calcEngine); 
     b8.addActionListener(calcEngine); 
     b9.addActionListener(calcEngine); 
     bplus.addActionListener(calcEngine); 
     bequal.addActionListener(calcEngine); 
     bminus.addActionListener(calcEngine); 
     bdivide.addActionListener(calcEngine); 
     breset.addActionListener(calcEngine); 
    } 


    public static void main(String[] args) 
    { 
     new Calculator(); 

    } 


    public void setScreen(String wee) { 

     screen.setText(wee); 
    } 

    public String getScreen() { 

     return screen.getText(); 
    } 
} 
+0

것은 당신이 여기에 게시하는 것이 더있을 수 있습니다 코드 검토를 요청하는 경우 :') ('.equals를 사용하는 경우 http://codereview.stackexchange.com/ 또한, 그것은 더 많은입니다 –

+0

double quotes 대신 char에 작은 따옴표를 사용하는 것이 효율적입니다. – Ascalonian

+0

@GregtheIncredulous 이것은 코드 검토가 아니며 특정 경고 메시지를 처리하는 방법입니다. 이것은 그것을위한 적절한 장소입니다. –

답변

4

여기에 해당 코드의 라인입니다. 대신 클래스 자체에서 호출해야합니다.

parent.setScreen(String.valueOf(totalnum)); 
+0

Oooh 알겠습니다! 너 빌 빌려줬 어! 감사!!! – lonelearner

관련 문제