2016-03-28 16 views
-1

Programlamaya yeni, lütfen, kolay git.Java'da Başka Bir Değişken Nasıl Saklanır ve Eklenir?

Sınıf için bir hesap makinesi uygulaması üzerinde çalışıyorum. Toplama, çıkarma, çarpma ve bölme yöntemlerini kurmak zorundayım.

package part1.code; 

import part1.user_interface.CalculatorUI; 

public class Calculator { 

private static final int BASE = 10; 
private int _value; 
private int _va; 
private CalculatorUI _ui; 

public Calculator(CalculatorUI calculatorUI) { 
    _ui = calculatorUI; 
    _value = 0; 

} 

public void digit_0_keyPressed() { 
    _value = _value * BASE + 0; 
    _ui.updateDisplay(); 
} 
public void digit_1_keyPressed() { 
    _value = _value * BASE + 1; 
    _ui.updateDisplay(); 
} 
public void digit_2_keyPressed() { 
    _value = _value * BASE + 2; 
    _ui.updateDisplay(); 
} 
public void digit_3_keyPressed() { 
    _value = _value * BASE + 3; 
    _ui.updateDisplay(); 
} 
public void digit_4_keyPressed() { 
    _value = _value * BASE + 4; 
    _ui.updateDisplay(); 
} 
public void digit_5_keyPressed() { 
    _value = _value * BASE + 5; 
    _ui.updateDisplay(); 
} 
public void digit_6_keyPressed() { 
    _value = _value * BASE + 6; 
    _ui.updateDisplay(); 
} 
public void digit_7_keyPressed() { 
    _value = _value * BASE + 7; 
    _ui.updateDisplay(); 
} 
public void digit_8_keyPressed() { 
    _value = _value * BASE + 8; 
    _ui.updateDisplay(); 
} 
public void digit_9_keyPressed() { 
    _value = _value * BASE + 9; 
    _ui.updateDisplay(); 
} 
public void clear_keyPressed() { 
    _value = 0; 
    _ui.updateDisplay(); 
} 
public int getValue() { 
    return _value; 
} 

public void equal_keyPressed() { 
    _value = _value; 
    _ui.updateDisplay(); 

    // TODO Define this method 
} 

public void add_keyPressed() { 
    _value = 



    _ui.updateDisplay(); 

    // TODO Define this method 

    } 
} 

Şimdi, yapacağınız temel bir şey 1 + 1'dir. Add_keyPressed için, 1 + 1 = 11 yerine 1 + 1 = 2'ye ulaşmaya çalışıyorum. Bu yüzden, değer girişini tutmaya ve yeni değeri aynı anda eklemeye çalışıyorum. '' Parametre geçişi (yanılıyor olabilirim), ya da modelleme, ama emin değilim. Ve bunu Statik olmadan (ki benim sınıfımda mutlak bir yasak olan) nasıl yapacağımı bilmiyorum. m, diğerleri yapmak görerek standarttır Ayrıca, bu, bir yöntem imzası tüm dahilinde -...

kamu int gerçekleştirmek (int arg)

dahil edilecek Has önceden

Teşekkür

+0

sorun nedir eklemek? Ne istiyorsun? Bir şeye mi takıldın? –

+0

İlk numarayı _value sonra operatöre ve ardından ikinci değeri _va'ya kaydetmeniz gerekecek mi? Bununla takıldınız mı? – Nanoc

+0

Üzgünüm Unuttum, _va bir başka değişkeni denemeyi denemek için bir girişimdi, onu sileceğim. Temel olarak add_keyPress'e sahip olmak istiyorum. Başka bir değer eklerken, başka bir değer eklediğimde, 1 + 1 (1 eklerken 1 (1 eklerken 1) 1 = 1, 1 + 1 = 11 yerine). – dabberson567

cevap

1

İşte değişikliklerin listesi
1.
4. Güncelleme preslenmiş anahtar eşittir sınıfın
3. Değişim operatör değişken için varsayılan değer ayarlamak için yapıcı bir operatör değişkeni ekleyin operatör
2. için bir enum Add yöntem
5. Güncelleme anahtar pres yöntemi

public class Calculator { 

    private static final int BASE = 10; 
    private int _value; 
    private int _va; 
    private CalculatorUI _ui; 
    private Operator op; 

    private enum Operator { 
     ADD, SUB, MUL, DIV, NO_OPERATION 
    }; 

    public Calculator(CalculatorUI calculatorUI) { 
     op = Operator.NO_OPERATION; 
     _ui = calculatorUI; 
     _value = 0; 
    } 

    public void digit_0_keyPressed() { 
     _value = _value * BASE + 0; 
     _ui.updateDisplay(); 
    } 

    public void digit_1_keyPressed() { 
     _value = _value * BASE + 1; 
     _ui.updateDisplay(); 
    } 

    public void digit_2_keyPressed() { 
     _value = _value * BASE + 2; 
     _ui.updateDisplay(); 
    } 

    public void digit_3_keyPressed() { 
     _value = _value * BASE + 3; 
     _ui.updateDisplay(); 
    } 

    public void digit_4_keyPressed() { 
     _value = _value * BASE + 4; 
     _ui.updateDisplay(); 
    } 

    public void digit_5_keyPressed() { 
     _value = _value * BASE + 5; 
     _ui.updateDisplay(); 
    } 

    public void digit_6_keyPressed() { 
     _value = _value * BASE + 6; 
     _ui.updateDisplay(); 
    } 

    public void digit_7_keyPressed() { 
     _value = _value * BASE + 7; 
     _ui.updateDisplay(); 
    } 

    public void digit_8_keyPressed() { 
     _value = _value * BASE + 8; 
     _ui.updateDisplay(); 
    } 

    public void digit_9_keyPressed() { 
     _value = _value * BASE + 9; 
     _ui.updateDisplay(); 
    } 

    public void clear_keyPressed() { 
     _value = 0; 
     _ui.updateDisplay(); 
    } 

    public int getValue() { 
     return _value; 
    } 

    public void equal_keyPressed(String uimessage) { 
     if (Operator.ADD.equals(op)) { 
      _value += _va; 
     } else if (Operator.MUL.equals(op)) { 
      _value *= _va; 
     } else if (Operator.DIV.equals(op)) { 
      _value = _va/_value; 
     } else if (Operator.SUB.equals(op)) { 
      _value = _va - _value; 
     } 
     _va = 0; 
     op = Operator.NO_OPERATION; 
     _ui.updateDisplay(); 
    } 

    public void add_keyPressed() { 
     if (!Operator.NO_OPERATION.equals(op)) { 
      equal_keyPressed(); 
     } else { 
     _ui.updateDisplay(); 
     } 

     _va = _value; 
     _value = 0; 
     op = Operator.ADD; 
    } 

    public void mul_keyPressed() { 
     if (!Operator.NO_OPERATION.equals(op)) { 
      equal_keyPressed(); 
     } else { 
      _ui.updateDisplay(); 
     } 

     _va = _value; 
     _value = 0; 
     op = Operator.MUL; 
    } 
} 
İlgili konular