Нужна помощь !

Тема в разделе "Java", создана пользователем BiOvolk, 17 ноя 2005.

Статус темы:
Закрыта.
  1. BiOvolk

    BiOvolk Гость

    Можете помочь написать прогу ... дайте код пожалуйста - первая простой Калькулятор на Java без java.swing a только с awt , 2-ая это просто крутящаяся линия, точней в проге несколько разных палок с разной толщиной и величиной .... крутятся с 1-ой скоростью .... Буду очень благодарен !!! :(
     
  2. Mustafaev Sergey

    Mustafaev Sergey Гость

    Вот воспользуйтесь моим калькулятором-аплетом

    import java.awt.*;
    import java.applet.Applet;
    /*
    Реализация простого калькулятора
    */
    public class Calculator extends Applet
    {
    TextField txtDisp;
    public final int OP_NONE = 0;
    public final int OP_ADD = 1;
    public final int OP_SUB = 2;
    public final int OP_MUL = 3;
    public final int OP_DIV = 4;
    public final int OP_NEG = 5;
    public final int OP_SQRT = 6;
    public final int OP_EQ = 7;
    public final int OP_C = 8;
    public final int OP_AC = 9;
    public final int OP_PCT = 14;
    public final int DECSEP = -1;

    long U;
    double V;
    String msDecimal;
    int mnOp = OP_NONE;
    boolean mbNewNumber = true;
    boolean mbDecimal = false;
    double mdReg = 0.0;
    boolean mbConstant = false;
    double mdConstant = 0.0;
    int mnConstantOp = OP_NONE;
    boolean mbPercent = false;
    double mdFirst = 0.0;
    /*
    В методе init() происходит первичная инициализация аплета
    ( описываются кнопки калькулятора, устанавливается цвет)
    */
    public void init()
    {
    CalcButton btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
    CalcButton btnDecSep, btnNeg, btnSqrt, btnPlus, btnMinus;
    CalcButton btnTimes, btnDiv, btnEqual, btnClear, btnAllClear;
    CalcButton btnPercent;

    setLayout(null); // Отключение компоновщика JAVA,
    // т. е. расположение кнопок будет производиться
    // самим разработчиком с помощью методов add() и
    // reshape()

    // Установка шрифта
    setFont(new Font("Helvetica", Font.BOLD|Font.ITALIC, 12));

    // Установка цвета аплета,
    // причем цвет берется из html-файла ( параметр "bgcolor"),
    // но в случае отсутствия этого параметра устанавливается nBGColor
    int nBGColor;
    try
    {
    nBGColor = Integer.parseInt(getParameter("bgcolor").substring(1), 16);
    }
    catch(RuntimeException e)
    {
    nBGColor = 0x990077;
    }
    setBackground(new Color(nBGColor));



    // Формирование кнопок калькулятора

    btn0 = new CalcButton("0", OP_NONE, 0);
    add(btn0);
    btn0.reshape(8, 176, 96, 24);

    btn1 = new CalcButton("1", OP_NONE, 1);
    add(btn1);
    btn1.reshape(8, 144, 40, 24);

    btn2 = new CalcButton("2", OP_NONE, 2);
    add(btn2);
    btn2.reshape(64, 144, 40, 24);

    btn3 = new CalcButton("3", OP_NONE, 3);
    add(btn3);
    btn3.reshape(120, 144, 40, 24);

    btn4 = new CalcButton("4", OP_NONE, 4);
    add(btn4);
    btn4.reshape(8, 112, 40, 24);

    btn5 = new CalcButton("5", OP_NONE, 5);
    add(btn5);
    btn5.reshape(64, 112, 40, 24);

    btn6 = new CalcButton("6", OP_NONE, 6);
    add(btn6);
    btn6.reshape(120, 112, 40, 24);

    btn7 = new CalcButton("7", OP_NONE, 7);
    add(btn7);
    btn7.reshape(8, 80, 40, 24);

    btn8 = new CalcButton("8", OP_NONE, 8);
    add(btn8);
    btn8.reshape(64, 80, 40, 24);

    btn9 = new CalcButton("9", OP_NONE, 9);
    add(btn9);
    btn9.reshape(120, 80, 40, 24);

    btnDecSep = new CalcButton("ф", OP_NONE, DECSEP);
    add(btnDecSep);
    btnDecSep.reshape(120, 176, 40, 24);

    btnNeg = new CalcButton("+/-", OP_NEG, 0);
    add(btnNeg);
    btnNeg.reshape(8, 48, 40, 24);

    btnSqrt = new CalcButton("Sqrt", OP_SQRT, 0);
    add(btnSqrt);
    btnSqrt.reshape(64, 48, 40, 24);

    btnPlus = new CalcButton("+", OP_ADD, 0);
    add(btnPlus);
    btnPlus.reshape(176, 144, 40, 56);

    btnMinus = new CalcButton("-", OP_SUB, 0);
    add(btnMinus);
    btnMinus.reshape(176, 80, 40, 56);

    btnTimes = new CalcButton("в", OP_MUL, 0);
    add(btnTimes);
    btnTimes.reshape(232, 80, 40, 24);

    btnDiv = new CalcButton("В", OP_DIV, 0);
    add(btnDiv);
    btnDiv.reshape(232, 112, 40, 24);

    btnEqual = new CalcButton("=", OP_EQ, 0);
    add(btnEqual);
    btnEqual.reshape(232, 144, 40, 56);

    btnClear = new CalcButton("C", OP_C, 0);
    add(btnClear);
    btnClear.reshape(232, 48, 40, 24);

    btnAllClear = new CalcButton("AC", OP_AC, 0);
    add(btnAllClear);
    btnAllClear.reshape(176, 48, 40, 24);

    btnPercent = new CalcButton("%", OP_PCT, 0);
    add(btnPercent);
    btnPercent.reshape(120, 48, 40, 24);

    txtDisp = new TextField("0", 80);
    txtDisp.setEditable(false);
    add(txtDisp);
    txtDisp.reshape(4, 8, 268, 31);



    // Вывод на табло калькулятора десятичной точки


    String sOneTenth = (new Double(0.1)).toString();
    msDecimal = sOneTenth.substring(sOneTenth.length()-2).substring(0, 1);
    }


    // Формирование из цифр числа
    public void append(int nValue)
    {
    String sDigit;

    if(nValue == DECSEP)
    if(!mbDecimal) // Проверка на наличие десятых долей
    {
    if(mbNewNumber)
    {
    txtDisp.setText("0");
    mbNewNumber = false;
    }
    mbDecimal = true;
    sDigit = msDecimal;
    }
    else
    return;
    else
    sDigit = (new Integer(nValue)).toString();
    if(mbNewNumber)
    {
    txtDisp.setText(sDigit);
    if(nValue != 0)
    mbNewNumber = false;
    }
    else

    txtDisp.setText(txtDisp.getText() + sDigit);
    repaint();
    }


    // В методе doOp() определяеся какое действие предстоит выполнить над

    // над введенными числами. И выполняются вычисления.
    public void doOp(int nNewOp)
    {
    double dDisp;

    dDisp = (new Double(txtDisp.getText())).doubleValue();
    if(mbPercent)
    if(nNewOp != OP_ADD && nNewOp != OP_SUB)
    mbPercent = false;
    if(!mbPercent)
    switch(nNewOp)
    {
    case OP_ADD:
    case OP_SUB:
    case OP_MUL:
    case OP_DIV:
    if(mbNewNumber)
    {
    if(nNewOp == mnOp && !mbConstant)
    {
    mbConstant = true;
    mdConstant = dDisp;
    mnConstantOp = nNewOp;
    }
    else
    mbConstant = false;
    }
    else
    mbConstant = false;
    case OP_EQ:
    case OP_PCT:
    if(!mbNewNumber || isEqOp(nNewOp))
    {
    if(mbConstant)
    {
    mdReg = mdConstant;
    mnOp = mnConstantOp;
    }
    mbPercent = nNewOp == OP_PCT;
    if(mbPercent)
    mdFirst = mdReg;
    switch(mnOp)
    {
    case OP_ADD:
    mdReg = mdReg + dDisp;
    break;
    case OP_SUB:
    mdReg = mdReg - dDisp;
    break;
    case OP_MUL:
    mdReg = mdReg * dDisp;
    break;
    case OP_DIV:
    mdReg = mdReg / dDisp;
    break;
    case OP_EQ:
    case OP_PCT:
    case OP_NONE:
    mdReg = dDisp;
    break;
    }
    if(mbPercent)
    mdReg /= 100;
    U = ((new Double(mdReg)).longValue());
    V = mdReg%1;
    if ( V == 0)
    txtDisp.setText((new Long(U)).toString());
    else
    txtDisp.setText((new Double(mdReg)).toString());
    }
    mnOp = nNewOp; // Определение нажатой не числовой
    mbNewNumber = true; // кнопки закончено. Восстановливаются
    mbDecimal = false; // параметры для ввода цифр
    break;
    }
    switch(nNewOp)
    {
    case OP_ADD:
    if(mbPercent)
    {
    mdReg = mdFirst + mdReg;
    txtDisp.setText((new Double(mdReg)).toString());
    mbPercent = false;
    }
    break;
    case OP_SUB:
    if(mbPercent)
    {
    mdReg = mdFirst - mdReg;
    txtDisp.setText((new Double(mdReg)).toString());
    mbPercent = false;
    }
    break;
    case OP_NEG:
    dDisp = -dDisp;
    U = ((new Double(dDisp)).longValue());
    V = dDisp%1;
    if ( V == 0)
    txtDisp.setText((new Long(U)).toString());
    else
    txtDisp.setText((new Double(dDisp)).toString());
    if(isEqOp(mnOp))
    {
    mdReg = dDisp;
    }
    break;
    case OP_SQRT:
    dDisp = Math.sqrt(dDisp);
    U = ((new Double(dDisp)).longValue());
    V = dDisp%1;
    if ( V == 0)
    txtDisp.setText((new Long(U)).toString());
    else
    txtDisp.setText((new Double(dDisp)).toString());
    if(isEqOp(mnOp))
    {
    mdReg = dDisp;
    }
    mbNewNumber = true;
    mbDecimal = false;
    break;
    case OP_C:
    dDisp = 0.0;
    txtDisp.setText("0");
    if(isEqOp(mnOp))
    {
    mdReg = dDisp;
    }
    mbNewNumber = true;
    mbDecimal = false;
    break;
    case OP_AC:
    txtDisp.setText("0");
    mnOp = OP_NONE;
    mbNewNumber = true;
    mbDecimal = false;
    mdReg = 0.0;
    mbConstant = false;
    break;

    }
    }

    // isEqOP -- это вспомогательная функция для алгебраических вычислений
    private protected boolean isEqOp(int nOp)
    {
    return nOp == OP_EQ || nOp == OP_PCT;
    }


    public static void main(String args[]) // Организация окна
    {
    CalcFrame frm = new CalcFrame("Calculator");
    Calculator pnl = new Calculator();
    pnl.init();
    frm.add("Center", pnl);
    frm.pack();
    frm.resize(276, 240);
    frm.show();
    }
    }
    // Коструктор класса CalcButton
    class CalcButton extends Button
    {
    int mnOp;
    int mnValue;

    CalcButton(String sText, int nOp, int nValue)
    {
    super(sText);
    mnOp = nOp;
    mnValue = nValue;
    }

    public boolean action(Event evt, Object arg)
    {
    Calculator par = (Calculator)getParent();

    if(mnOp == par.OP_NONE) // Если ввденный символ цифра
    par.append(mnValue);
    else
    par.doOp(mnOp); // если не цифра
    return true;
    }
    }

    class CalcFrame extends Frame
    {
    CalcFrame(String s)
    {
    super(s);
    }

    /* handleEvent() - это обработчик событий, связанных с окном. Проверяя
    поле id, можно определить какое событие произошло. В этом примере проверяется
    закрытие окна. Если evt.id == Event.WINDOW_DESTROY, то необходимо выйти из
    среды JAVA с помощью System.exit().
    */
    public boolean handleEvent(Event evt)
    {
    if(evt.id == Event.WINDOW_DESTROY)
    {
    System.exit(0);
    return true;
    }
    else
    return super.handleEvent(evt);
    }
    }
     
  3. Guest

    Guest Гость

    Nu kak pomoglo Napishi otvet! Jdu
     
  4. nik

    nik Гость

    Скодько стоит 1 час работы программиста?
     
  5. Mustafaev Serega

    Mustafaev Serega Гость

    50$ A chto nujno?
     
  6. udav_pit

    udav_pit Гость

    Интересно сколько ты в месяц получаешь?
    50$ * 8h * 30d = 12000$ :D
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей