2011-02-09 2 views
2

과제의 일부로 기본 계산기를 완료했습니다. 나는 현재 두 개의 텍스트 feild를 사용하여 opperands를 입력하고 있습니다. 연산자를 눌러 답을 표시합니다.동일한 jTextfield의 두 자리를 사용하여 계산 수행

그러나 두 정수는 동일한 텍스트 필드에서 입력해야합니다. 어떻게 처리합니까?

나는 배열이나 스택을 사용하는 것을 고려해 보았지만 작동시키지 못했습니다.

아래에 제 코드가 포함되어 있습니다 ... 계산기가 준비되었으며 모든 것이 잘 작동하고 곱셈 나누기 더하기 및 빼기를 수행하고 텍스트 영역에 답변을 표시합니다.이 두 숫자를 더하거나 뺍니다. opper를 누르고 계산이 완료되면 (Reverse Polish Notation), 두 번째 필드의 사용을 제거하고 텍스트 필드에 첫 번째 값을 입력하고 Enter 키를 누른 다음 두 번째 필드를 삽입하려면 어떻게해야합니까? 값을 동일한 텍스트 필드에 입력하고 Enter 키를 누릅니다. 첫 번째를 valA로 저장하고 두 번째를 val B (정수)로 저장합니다. 그러나 동일한 텍스트 필드 여야합니다.

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

/* 
* Calcu.java 
* 
* Created on Feb 9, 2011, 10:11:37 PM 
*/ 

/** 
* 
* @author Halaseh 
*/ 
public class Calcu extends javax.swing.JFrame { 

    /** Creates new form Calcu */ 
    public Calcu() { 
     initComponents(); 
    } 

    /** This method is called from within the constructor to 
    * initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is 
    * always regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

     jScrollPane1 = new javax.swing.JScrollPane(); 
     jTextArea1 = new javax.swing.JTextArea(); 
     jTextField1 = new javax.swing.JTextField(); 
     jTextField2 = new javax.swing.JTextField(); 
     jButton1 = new javax.swing.JButton(); 
     jButton2 = new javax.swing.JButton(); 
     jButton3 = new javax.swing.JButton(); 
     jButton4 = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jTextArea1.setColumns(20); 
     jTextArea1.setRows(5); 
     jScrollPane1.setViewportView(jTextArea1); 

     jTextField1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jTextField1ActionPerformed(evt); 
      } 
     }); 

     jTextField2.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jTextField2ActionPerformed(evt); 
      } 
     }); 

     jButton1.setText("+"); 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 

     jButton2.setText("-"); 
     jButton2.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton2ActionPerformed(evt); 
      } 
     }); 

     jButton3.setText("*"); 
     jButton3.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton3ActionPerformed(evt); 
      } 
     }); 

     jButton4.setText("/"); 
     jButton4.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton4ActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) 
         .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING) 
         .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() 
          .addComponent(jButton3) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
          .addComponent(jButton4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
         .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() 
          .addComponent(jButton1) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
          .addComponent(jButton2)))) 
       .addContainerGap(222, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jButton1) 
        .addComponent(jButton2)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jButton3) 
        .addComponent(jButton4)) 
       .addContainerGap(69, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold> 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
int valA = Integer.parseInt(jTextField1.getText()); 
int valB = Integer.parseInt(jTextField2.getText());  // TODO add your handling code here: 

     int valC = valA+valB; 
     jTextArea1.append(Integer.toString(valC)); 
     jTextArea1.append("\n"); 


    } 

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) { 

int valA = Integer.parseInt(jTextField1.getText()); 
    } 

    private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) { 
int valB = Integer.parseInt(jTextField2.getText());  // TODO add your handling code here: 
    } 

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
int valA = Integer.parseInt(jTextField1.getText()); 
int valB = Integer.parseInt(jTextField2.getText());  // TODO add your handling code here: 

     int valC = valA-valB; 
     jTextArea1.append(Integer.toString(valC)); 
     jTextArea1.append("\n");  // TODO add your handling code here: 
    } 

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { 
int valA = Integer.parseInt(jTextField1.getText()); 
int valB = Integer.parseInt(jTextField2.getText());  // TODO add your handling code here: 

     int valC = valA*valB; 
     jTextArea1.append(Integer.toString(valC)); 
     jTextArea1.append("\n");  // TODO add your handling code here: 
    } 

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { 
int valA = Integer.parseInt(jTextField1.getText()); 
int valB = Integer.parseInt(jTextField2.getText());  // TODO add your handling code here: 

     int valC = valA/valB; 
     jTextArea1.append(Integer.toString(valC)); 
     jTextArea1.append("\n");  // TODO add your handling code here: 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new Calcu().setVisible(true); 
      } 
     }); 
    } 

    // Variables declaration - do not modify 
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JButton jButton3; 
    private javax.swing.JButton jButton4; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JTextArea jTextArea1; 
    private javax.swing.JTextField jTextField1; 
    private javax.swing.JTextField jTextField2; 
    // End of variables declaration 

} 
+0

오, 나는 오늘 자바를 배우기 시작 했으므로,이 계산기를 처음부터 새로 작성한 것으로 생각합니다.하지만 혼자하는 법을 이해하지 못할 수도 있습니다. 예를 들어 도움이 될 수 있습니다. – Kay

답변

0

제출 버튼을 포함하거나 입력 할 Enter 키를 수신하고 프로그램이 텍스트 필드에서 숫자를 읽고 변수에 저장하도록합니다. 그러면 입력 한 번호를 다른 곳에 표시 할 수 있습니까?

과제가 무엇을 요구하는지 잘 모르겠지만 사용자가 전체 방정식 ("1 + 2")을 입력하고 파싱하는 것으로 생각할 것입니다.

0

사용자가 마음을 바꾼 경우 전체 문자열을 입력 한 후에 구문 분석하는 것이 가장 좋습니다. char 배열로 변환 한 다음 단일 또는 연속 숫자와 피연산자를 찾으십시오.

2

입력을 읽고 어떤 식 으로든 문자열을 구문 분석해야합니다.

만 등의 형태로 1 + 3, * 5 4의 일을 기대해야하는 경우가 존재하는지 여부를 요청하여 동작을 확인할 수 있습니다 연산자 기호의

if(inputString.indexOf("+") >= 0) { 
    //handle addition 
} 

그리고 당신 사용하여 숫자를 모두 얻을 수 :

String[] numbers = inputString.split("+"); 
Integer numberOne = Integer.parseInt(numbers[0]); 
... 

이것은 가정을 많이 만들고, 일반적으로 당신은 잠재적 인 문제를 확인해야하지만, 이것은 단지 프로젝트가 지정된 방법에 따라 달라집니다. 슬프게도

+0

답장을 보내 주셔서 감사합니다. 두 가지 질문 .. .split은 무엇을합니까? 그리고 이미 opperands 용 버튼이 있습니다. 그래서 정확히 어떻게 두 개의 값만 저장하겠습니까? 메신저 어쩌면 string [] array; int valA = Integer.parseInt (array [0]); int valB = Integer.parseInt (array [1]); 구문이 잘못되었음을 알고 있습니다. – Kay

+0

작성한 것처럼 첫 번째 값과 두 번째 값만 저장합니다. .split (...)은 전달한 문자열로 값을 나눕니다. 따라서 "3 + 4 + 5".split ("+")는 [3,4,5]와 같이 반환됩니다. 메소드가 무엇인지 알아 내려고 할 때 API 설명서를 사랑해야합니다. String을 시작하는 것이 좋습니다. http://download.oracle.com/javase/1.5.0/docs/api/index.html?java/lang /String.html –

0

, 나는 아직 말씀 드릴 수 없습니다 ..

하지만이 코드를 사용, JTextField로의 입력 키를 수신하려면 :

EntryBox.addKeyListener(
      new KeyAdapter() { 

       public void keyPressed(KeyEvent e) { 
        int key = e.getKeyCode(); 
        if (key == KeyEvent.VK_ENTER) { 
         ActionToPerform(null); 
        } 
       } 
      }); 

EntryBox 내 JTextField를, 그리고 ActionToPerform 인 방법을 Enter 키를 누르면 호출됩니다. ActionToPerform에서 EntryBox의 텍스트/숫자를 변수로 복사합니다. 또한, 나는

EntryBox.setText(""); 

이 텍스트 상자를 지 웁니다와 ActionToPerform 종료 제안, 그래서 다른 번호를 받아 들일 준비가되어 있습니다.

관련 문제